首页 > 编程 > Python > 正文

python多任务之协程的使用详解

2019-11-25 11:51:34
字体:
来源:转载
供稿:网友

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表