day⑨: 协程_gevent


Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。


例子: 

gevent_同步与异步的性能区别
12345678910111213141516171819202122import gevent def task(pid):    """    Some non-deterministic task    """    gevent.sleep(0.5)    print('Task %s done' % pid) def synchronous():    for i in range(1,10):        task(i) def asynchronous():    threads = [gevent.spawn(task, i) for i in range(10)]    gevent.joinall(threads) print('Synchronous:')synchronous() print('Asynchronous:')asynchronous()


运行结果:

12345678910111213141516171819202122D:\python35\python.exe D:/pycharm_project/s12/day9/协程_gevent/gevent_同步与异步的性能区别.pySynchronous:Task 1 doneTask 2 doneTask 3 doneTask 4 doneTask 5 doneTask 6 doneTask 7 doneTask 8 doneTask 9 doneAsynchronous:Task 0 doneTask 9 doneTask 8 doneTask 7 doneTask 6 doneTask 5 doneTask 4 doneTask 3 doneTask 2 doneTask 1 done




来自为知笔记(Wiz)