时间:2021-05-23
1|0使用yield完成多任务
import timedef test1(): while True: print("--1--") time.sleep(0.5) yield Nonedef test2(): while True: print("--2--") time.sleep(0.5) yield Noneif __name__ == "__main__": t1 = test1() t2 = test2() while True: next(t1) next(t2)2|0使用greenlet完成多任务
如果没有安装,则pip install greenlet
from greenlet import greenletimport timedef test1(): while True: print("---A---") gr2.switch() time.sleep(0.5)def test2(): while True: print("---b---") gr1.switch() time.sleep(0.5)gr1 = greenlet(test1)gr2 = greenlet(test2)gr1.switch()3|0使用gevent完成多任务
首先使用pip install gevent进行安装
gevent是对greenlet的再次封装,使用起来更加简便,当有耗时操作时会自动切换到其他协程。gevent封装了常用的耗时操作,如thread、socket、time、multiprocessing等模块。
import geventimport timefrom gevent import monkey# 打补丁,不需要改原来的耗时操作,否则是要使用gevent提供的模块monkey.patch_all()def f(n): for i in range(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多任务之协程的使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
单线程+多任务异步协程协程在函数(特殊函数)定义的时候,使用async修饰,函数调用后,内部语句不会立即执行,而是会返回一个协程对象任务对象任务对象=高级的协程
协程,又称微线程,纤程。英文名Coroutine。协程是Python中另外一种实现多任务的方式,只不过比线程更小,占用更小执行单元(理解为需要的资源)。为啥说它
什么是协程协程是python种一种实现多任务的方式,他是一种比线程更加小的单元,占用更小的执行单元(资源),为啥说他是一个执行单元,因为他自带CPU上下文,这样
本文实例讲述了Python协程yield与协程greenlet简单用法。分享给大家供大家参考,具体如下:协程协程,又称微线程,纤程。英文名Coroutine。协
本文实例讲述了python协程用法。分享给大家供大家参考。具体如下:把函数编写为一个任务,从而能处理发送给他的一系列输入,这种函数称为协程defprint_ma