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多任务之协程的使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!