
python相关
文章平均质量分 73
fjs_cloud
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
python协程的实现(greenlet源码分析)
基本上读完了greenlet的源代码,代码不多,就2000行C语言的代码,其中有一部分栈寄存器的修改的代码是由汇编实现的。。。一句话来说明greenlet的实现原理:通过栈的复制切换来实现不同协程之间的切换。。。那么接下里来具体的来看看greenlet的代码到底是怎么实现的。。。原创 2014-08-25 20:46:13 · 9639 阅读 · 1 评论 -
gevent的resolver与线程池
在网络编程中,有一些有的时候比较难处理的地方,尤其是在系统性能要求比较高的时候,(1)类似于gethostbyname,getaddrinfo这些操作,不能阻塞(2)connect方法也不能阻塞不过一个优秀成熟的服务器系统都需要能够完美的解决这些问题。。。gevnet应该算是吧,起码这些问题都得到比较好的解决。在gevent中默认将会使用线程池来解决gethos原创 2016-02-02 15:41:48 · 1817 阅读 · 0 评论 -
python多进程web服务器新思路
python这种语言可能最让人诟病的就是它的语言执行效率比较低(当然,相对于ruby,python还算良心),多线程残废难以利用多核cpu,最开始写java多线程写的爽了,会非常不适应在python,没办法只有多进程的方法来搞了。在web服务器方面,python现在比较常用的方式有两种: (1)开多个进程,大家监听不同的端口,然后前面挂一个反向代理 (2)首先启动父进程,监听端口,然后启动原创 2016-01-08 12:19:08 · 2448 阅读 · 0 评论 -
gevent关闭socket操作
最近在分析系统的时候,发现在压测的时候服务端出现了比较多的CLOSE_WAIT状态的tcp连接,需要等一会才能消除掉。。。。恩,CLOSE_WAIT状态的tcp状态是怎么出现的呢。。:首先客户端首先调用的close方法,那么将会发送fin数据包给服务端。。。服务端收到fin数据包之后,将会返回ack确认,然后服务器的tcp连接就进入了CLOSE_WAIT状态了,这个时候服务原创 2015-12-09 22:09:41 · 2804 阅读 · 0 评论 -
Gevent的socket协程安全性分析
一般讨论socket的并发安全性,都是指线程的安全性。。。而且绝大多数的情况下socket都不是线程安全的。。当然一些框架可能会对socket进行一层封装,让其成为线程安全的。。。例如java的netty框架就是如此,将socket封装成channel,然后让channel封闭到一个线程中,那么这个channel的所有的读写都在它所在的线程中串行的进行,那么自然也就是线程安全的了。。。。原创 2015-05-24 22:18:22 · 4270 阅读 · 0 评论 -
python with语句与上下文管理器
经常我们在设计API的时候会有这样的需求:(1)用户从某个管理器中获取一个资源(2)用户使用这个资源(3)在使用完之后,需要将这个资源还给管理器一般情况下,我们需要做两个接口:get,和return这样子有一种风险就是,在写业务代码的时候,忘记了将资源还回去。。。但是对于python而言,由于加上了上下文管理,就可以避免这种问题。。。而且对于API的设计原创 2015-06-06 20:32:42 · 993 阅读 · 0 评论 -
python进程间传递文件描述符扩展库
由于python本身的线程基本上比较残废,所以为了利用机器的cpu,就不得不用上多进程。。。在游戏服务器的设计中,最为常见的方式是:挂一个前端服务器,专门来维护与客户端的连接,然后将客户端的请求数据转发给后端服务器。。。上面的方式是现在最为正统的。。。但是自己因为环境的限制,需要做到对客户端透明,然后将后端的服务器转换成为多进程的。。。所以这里就只有用一点比较别扭的方法了,首先处理登录等一些常规的逻辑放在前端服务器,当进入放进进行匹配战斗之后,将客户端的socket连接直接交给后端服务器,然后进行原创 2015-05-18 09:48:21 · 2048 阅读 · 0 评论 -
cython入门(hello cython)
开始主要写python的东西了,写习惯了JAVA和node.js,现在最不能适应的就是这语言实在是太慢了。。。慢的让人受不了。。。不过确实也有很爽的地方,python确实简单方便由于现在涉及到的东西想要在gevent上做一层扩展,使得socket描述符可以跨进程在gevent的loop上注册。。。python的socket由于没有sendmsg这些东西,所以这里就只有用到cytho原创 2015-05-08 16:51:41 · 1279 阅读 · 0 评论 -
一致性哈希概念与Python的简单实现
很早就接触了一致性哈希这概念,不过一直原创 2014-11-05 20:55:10 · 6335 阅读 · 0 评论 -
python元类分析
刚开始接触到Python新式类中的元类的概念的时候很是纠结了下。。不知道这是个啥东西。。。用以下几个定义来说明吧:(1)Python中,类也是对象。。只不过这种对象比较的特殊,他用于创建别的对象(2)元类也是一种类,只不过它更特殊。。。他是用来创建别的类的类。。。(呵呵,是不是很拗口)原创 2014-11-03 19:39:06 · 1233 阅读 · 1 评论 -
python魔法方法:__getattr__,__setattr__,__getattribute__
难得有时间看看书。。原创 2014-11-01 20:39:21 · 17568 阅读 · 2 评论 -
Gevent的协程实现原理
之前之所以看greenlet的代码实现,主要就是想要看看gevent库的实现代码。。。然后知道了gevent的协程是基于greenlet来实现的。。。所以就又先去看了看greenlet的实现。。。这里就不说greenlet的具体实现了,关键就是栈数据的复制拷贝,栈指针的位移。。。因为gevent带有自己的I/O以及定时循环,所以它对greenlet又加了一层的扩展。。。原创 2014-09-02 18:29:36 · 9232 阅读 · 1 评论 -
gevent开发http服务器与tcp服务器
感觉上gevent相关的东西也都了解的差不多了。。。最后shou'yi'xia原创 2014-09-10 15:08:07 · 5174 阅读 · 0 评论 -
Gevent源码之loop的实现
gevent之所以性能好,最主要就得益于对libev的封装,这里就来看看这部分具体的实现。。。稍微看一下libev的用法就知道,libev将各种事件都定义为了watcher,这里包括了定时,io等等。。在gevent主要就是对libev的loop以及watcher进行了封装。。这部分采用的是cython来写的。。原创 2014-09-09 15:27:05 · 3248 阅读 · 0 评论 -
python协程入门(greenlet)
基本上greenlet的大体的东西都看的差不多了,看代码好久没有这么费劲过了,原创 2014-08-25 19:19:10 · 2659 阅读 · 1 评论 -
weblogviewer的使用与实现
系统代码地址:https://github.com/2225377fjs/weblogviewer系统需求:因为机器较多,偶尔需要在线调试一些东西,看看log状况,如果要上机器去看的话就比较麻烦,就希望能够开发一个能够支持在浏览器上实时tail查看日志的系统,能够配置和管理多个监控的服务器,同时希望系统是比较轻的,不要影响服务器上现有的应用。最开始http://logio.or原创 2016-04-14 17:20:38 · 5304 阅读 · 2 评论