python多任务之协程的使用详解
importtime deftest1(): whileTrue: print("--1--") time.sleep(0.5) yieldNone deftest2(): whileTrue: print("--2--") time.sleep(0.5) yieldNone if__name__=="__main__": t1=test1() t2=test2() whileTrue: next(t1) next(t2)
2|0使用greenlet完成多任务
如果没有安装,则pipinstallgreenlet
fromgreenletimportgreenlet importtime deftest1(): whileTrue: print("---A---") gr2.switch() time.sleep(0.5) deftest2(): whileTrue: print("---b---") gr1.switch() time.sleep(0.5) gr1=greenlet(test1) gr2=greenlet(test2) gr1.switch()
3|0使用gevent完成多任务
首先使用pipinstallgevent进行安装
gevent是对greenlet的再次封装,使用起来更加简便,当有耗时操作时会自动切换到其他协程。gevent封装了常用的耗时操作,如thread、socket、time、multiprocessing等模块。
importgevent importtime fromgeventimportmonkey #打补丁,不需要改原来的耗时操作,否则是要使用gevent提供的模块 monkey.patch_all() deff(n): foriinrange(n): print(gevent.getcurrent(),i) #使用gevent提供的耗时模块 #gevent.sleep(0.5) time.sleep(0.5) g1=gevent.spawn(f,5) g2=gevent.spawn(f,5) g3=gevent.spawn(f,5) #g1.join() #g2.join() #g3.join() #一次性添加全部的任务 gevent.joinall([g1,g2,g3])
总结
以上所述是小编给大家介绍的python多任务之协程的使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!