''' 定义:协程是一种用户态的轻量级线程 好处:方便切换控制流,简化编程模型 高并发+高扩展性+低成本:一个CPU支持上万的协程都不是问题。所以很适合用于高并发处理 无需原子操作锁定及同步的开销 无需线程上下文切换的开销 缺点: 无法利用多核资源:协程的本质是个单线程 协程需要和进程配合才能运行在多CPU上 进行阻塞(Blocking)操作(如IO时)会阻塞掉整个程序 # greenlet是一个用C实现的协程模块,它可以使你在任意函数之间随意切换 ''' from greenlet import greenlet def test1(): print("123") g2.switch() print("iii") g1.switch() def test2(): print("222") g1.switch() g1 = greenlet(test1) g2 = greenlet(test2) g1.switch() #Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步编程,在gevent中用到的主要模式是Greenlet import gevent import time start = time.time() def fun1(): print("aaaaaaa") gevent.sleep(2) print("cccccccc") def fun2(): print("bbbbbbb") gevent.sleep(1) print("dddddddd") gevent.joinall([ gevent.spawn(fun1), gevent.spawn(fun2) ]) end = time.time() print(start- end)