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