标签:alt %s 解决方法 传参数 sleep col cpu 自己的 传参
协程
协程: 单线程下的并发,应用程序控制的并发,是用户自己调度的,自己控制自己的速度快。
并发: 切换任务+保存状态
单线程下实现并发:单线程下的多个任务,遇到IO就切,把单线程整体的IO降到最低。相当于把自己的IO伪装起来,让操作系统将更多的CPU分配给线程。程序用的cpu多,就叫执行效率高
总结协程特点:
greenlet模块
from greenlet import greenlet import time def eat(name): print(‘%s eat1‘ %name) # time.sleep(10) 遇到IO不会切 g2.switch(‘yang‘) print(‘%s eat2‘ %name) g2.switch() def play(name): print(‘%s play1‘ %name) g1.switch() print(‘%s play2‘ %name) g1 = greenlet(eat) g2 = greenlet(play) g1.switch(‘yang‘) #第一次启动需要传参数 ‘‘‘ 打印结果: yang eat1 yang play1 yang eat2 yang play2 ‘‘‘
gevent模块
gevent: 里面封装了greenlet模块,但是可以检测到IO操作,自动切换任务
缺点:只能检测到gevent.sleep()等,gevent的IO阻塞
解决方法:导入gevent模块下的monkey方法,在文件的开头写:from gevent import monkey;monkey.patch_all()
标签:alt %s 解决方法 传参数 sleep col cpu 自己的 传参
原文地址:https://www.cnblogs.com/Mryang123/p/8928987.html