Gevent
- gevent是第三方库,通过Greenlet提供协程支持(一个Greenlet对象就是一个协程),其基本思想是:
- 当一个greenlet遇到IO操作时,比如访问网络,就会切换执行其它greenlet,等待IO操作完成,再在适当的时候再切换回来继续执行。由于IO操作非常耗时,通过gevent自动切换greenlet,保证总有一个greenlet在执行,避免空等IO,提高执行效率。
from gevent import monkey; monkey.patch_socket()
import gevent
import time
def f(n):
for i in range(n):
print gevent.getcurrent(), i
time.sleep(0.1)
# gevent.sleep(0.1)
g1 = gevent.spawn(f, 2)
g2 = gevent.spawn(f, 4)
g3 = gevent.spawn(f, 6)
g1.join()
g2.join()
g3.join()