gevent之所以性能好,最主要就得益于对libev的封装,这里就来看看这部分具体的实现。。。
稍微看一下libev的用法就知道,libev将各种事件都定义为了watcher,这里包括了定时,io等等。。
在gevent主要就是对libev的loop以及watcher进行了封装。。这部分采用的是cython来写的。。...
分类:
其他好文 时间:
2014-09-09 16:06:48
阅读次数:
349
安装步骤:Gevent依赖libevent和greenlet,需要分别安装。1,安装 macport (如已安装,可以跳过)2,通过终端 键入:sudo port install libevent3,安装 pip : sudo easy_install pip4,安装 greenlet :sudo ...
分类:
其他好文 时间:
2014-09-09 15:06:38
阅读次数:
227
本篇将讨论gevent的两架马车-libev和greenlet如何协同工作的。gevent事件驱动底层使用了libev,我们先看看如何单独使用gevent中的事件循环。#coding=utf8
import socket
import gevent
from gevent.core import loop
def f():
s, address = sock.accept()
p...
分类:
其他好文 时间:
2014-09-08 01:04:46
阅读次数:
396
之前之所以看greenlet的代码实现,主要就是想要看看gevent库的实现代码。。。然后知道了gevent的协程是基于greenlet来实现的。。。所以就又先去看了看greenlet的实现。。。
这里就不说greenlet的具体实现了,关键就是栈数据的复制拷贝,栈指针的位移。。。
因为gevent带有自己的I/O以及定时循环,所以它对greenlet又加了一层的扩展。。。...
分类:
其他好文 时间:
2014-09-02 19:59:15
阅读次数:
288
1 # -*- coding:utf-8 -*- 2 #! /usr/bin/env python 3 ''' 4 Created on 2014年9月2日 5 ''' 6 import gevent 7 from gevent.queue import Queue, Empty 8 import....
分类:
其他好文 时间:
2014-09-02 19:42:25
阅读次数:
385
1 # -*- coding:utf-8 -*- 2 #! /usr/bin/env python 3 ''' 4 Created on 2014年9月2日 5 ''' 6 import gevent 7 from gevent.queue import Queue 8 import random....
分类:
其他好文 时间:
2014-09-02 19:32:15
阅读次数:
223
看了很多,不是很早不更新了,就是不支持gevent 最终选用了sleekxmpp #!/usr/bin/env?python
#?-*-?coding:?utf-8?-*-
#?https://github.com/fritzy/SleekXMPP/tree/develop/examples
import?sys
if?"th...
分类:
编程语言 时间:
2014-08-24 22:23:38
阅读次数:
682
早就听说gevent基于事件的异步处理能力 效率多么,一致z...
分类:
其他好文 时间:
2014-08-21 01:39:03
阅读次数:
250
前言:今天就写点gevent的高级点的用法,对于我来说这些也是常用的gevent模块。gevent的AsyncResutl模块的用途,看字眼的意思是一个异步的任务的结果。其实官方的说法也让人有些发蒙。其实说白了就是协程间的通信,我是老板,让大哥和小弟同事去收账,小弟做完了后,会等大哥来..
分类:
其他好文 时间:
2014-08-11 10:18:52
阅读次数:
346