多协程

tech2022-07-10  186

1、协程

比线程更小地占用执行单元(自带CPU的上下文)

线程会造成缓存,使用协程直接操作CPU的上下文

2、全自动多协程(gevent)

import gevent def func(num): for i in range(num): print(gevent.getcurrent(),i) # getcurrent()获取当前协程 # 模拟耗时操作,实现交替完成任务 gevent.sleep(1) # gevent本身带有sleep功能,这里不用time.sleep if __name__ == '__main__': # TODO 生成协程 g1 = gevent.spawn(func,5) g2 = gevent.spawn(func,6) g3 = gevent.spawn(func,7) # 等待子协程结束主进程再结束 g1.join() g2.join() g3.join()

猴子补丁自动识别耗时操作

import gevent import time # TODO 打上猴子补丁,为了自动识别耗时操作 from gevent import monkey monkey.patch_all() # 打上猴子补丁,将程序中所有耗时操作的代码换成gevent中自己的耗时代码 def func(name): for i in range(10): print(name,i) # 打印任务的名字 time.sleep(1) # 模拟耗时操作 if __name__ == '__main__': # TODO 创建协程,同时等待协程结束 gevent.joinall([ gevent.spawn(func,'w1'), gevent.spawn(func,'w2'), gevent.spawn(func,'w3'), ])
最新回复(0)