Python高并发的网络编程库:eventlet

eventlet   2013-10-20 17:55:06 发布
您的评价:
     
0.0
收藏     0收藏
文件夹
标签
(多个标签用逗号分隔)
eventlet是一个用来处理和网络相关的python库函数,而且可以通过协程来实现并发,在eventlet里,把“协程”叫做 greenthread(绿色线程)。所谓并发,就是开启了多个greenthread,并且对这些greenthread进行管理,以实现非阻塞式的 I/O。比如说用eventlet可以很方便的写一个性能很好的web服务器,或者是一个效率很高的网页爬虫,这都归功于eventlet的“绿色线程”,以及对“绿色线程”的管理机制。更让人不可思议的是,eventlet为了实现“绿色线程”,竟然对python的和网络相关的几个标准库函数进行了改写,并且可以以补丁(patch)的方式导入到程序中,因为python的库函数只支持普通的线程,而不支持协程,eventlet称之为“绿化”。

它通过greenlet提供的协程功能,让开发者可以不用将以往的多线程等并发程序的开发方式转变成异步状态机模型,就能直接使用select/epoll/kqueue等操作系统提供的支持高并发IO接口,并且能尽可能地发挥它们在并发上的优势。

与它同类的另一款产品是Gevent,它们有着很类似的设计。

在CPython下,由于Gevent使用了Cython绑定了libev或者libevent等C库,导致Gevent比eventlet有着更优秀的性能。

但是也因为Cython写的部分组件,导致Gevent无法借助PyPy来给它加速,而eventlet则没有这个限制。在PyPy的加速下,eventlet的性能可以有成倍的提升。

项目主页:http://www.open-open.com/lib/view/home/1382234530214

扩展阅读

使用Python进行并发编程
C++协程库:orchid
Gevent: 优点,缺点,以及不优美的地方
Python 异步 IO 的未来(从 Web 后端开发的角度)
OpenStack 通用技术有哪些

为您推荐

使用Python进行并发编程
gevent程序员指南
Redis集群最佳实践
全面解读python web 程序的9种部署方式
Tornado 4.3 文档翻译: 用户指南-异步和非阻塞I/O

更多

eventlet
网络工具包
相关文档  — 更多
相关经验  — 更多
相关讨论  — 更多