分享

python Eventlet

 java_laq小馆 2014-05-22

Eventlet 是 由第二人生(Secondlife )开源的高度伸缩性的Python网络编程库.
Eventlet 可以用来处理多线程方面的工作,但它使用的是 green threads 概念,所以用资源的开销很少。

根据官方介绍大致特性如下:

非阻塞I/O模型协程(Coroutines)使得开发者可以采用阻塞式的开发风格,却能够实现非阻塞I/O的效果隐式事件调度,使得可以在Python解释器或者应用程序的某一部分去使用Eventlet


关于协程,大致可以理解成允许子程序可以多次暂停和恢复执行,是实现多任务的一种有效手段, 具体见这里.

在Python的世界里,实现了nonblocking I/O的产品并不算少.比如内置的Asyncore和著名的Twisted.相比之下,Eventlet是更容易上手和使用的。

举个例子

import eventlet

pool = eventlet.GreenPool()

while True:    pool.spawn(func,args )


上面这段代码,几乎就是使用eventlet的范式:

GreenPool 用来实现协程,保证并行;Spawn     用来调用相应的函数,完成具体业务.

每个func之间切换,实施“你运行一会、我运行一会”,并且在进行切换时必须指定何时切换以及切换到 哪,当出现阻塞时,就显式切换到另一 段没有被阻塞的代码段执行,直到原先的阻塞状况消失以后,再人工切换回原来的代码段继续处理.

注: 在python2.4中,from eventlet import *, 在python2.7中,import eventlet

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多