Tag Archives: Gevent

关于gevent的Timeout(超时)问题……

真的是内牛满面啊,虽然4个月前就开始用gevent,但是直到今天才知道到底怎么才能设置gevent(含monkey打patch后)的超时!!

官方文档太坑爹了,在很隐藏的一个角落里才发现这么一个类gevent.Timeout。

事情是这样的:我们常用的socket都是阻塞的,那么超时是很好设置的。但是,用过Linux下非阻塞I/O的都知道,非阻塞情况下,设置连接超时神马都是浮云的,因为人家是非阻塞的……

于是,当我们用monkey.patch_all()之后,所有的socket[……]

继续阅读

关于gevent的微线程“eventlet”同步问题

理论上讲,Python是不存在线程安全问题的,由于GIT么,但是这是有前提的:sleep,I/O导致的wait都可能会引发线程安全隐患。

同理,gevent是基于事件驱动模型的,就不太可能是线程安全的。

gevent.coros.Semaphore提供了信号量的功能,可以是n个哦!

semaphore.acquire() -> 获取“锁”
semaphore.release() -> 释放“锁”

gevent的文档写的真简介啊,于是测试了个基本的同步方法:同[……]

继续阅读

初试Gevent – 高性能的Python并发框架

Gevent是一个基于greenlet的Python的并发框架,以微线程greenlet为核心,使用了epoll事件监听机制以及诸多其他优化而变得高效。

于greenlet、eventlet相比,性能略低,但是它封装的API非常完善,最赞的是提供了一个monkey类,可以将现有基于Python线程直接转化为greenlet,相当于proxy了一下(打了patch)。

今天有空就迫不及待的试一下效果。

1、安装

Gevent依赖libevent和greenlet,需要分别安[……]

继续阅读