day⑨: 协程_gevent
Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet, 它是以C扩展模块形式接入Python的轻量级协程。 Greenlet全部运行在主程序操作系统进程的内部,但它们被协作式地调度。
例子:
gevent_同步与异步的性能区别
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | import geventdef 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() |
运行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | D:\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 |
浙公网安备 33010602011771号