1|0 使用yield完成多任務(wù)
import time def test1(): while True: print("--1--") time.sleep(0.5) yield None def test2(): while True: print("--2--") time.sleep(0.5) yield None if __name__ == "__main__": t1 = test1() t2 = test2() while True: next(t1) next(t2)
2|0使用greenlet完成多任務(wù)
如果沒有安裝,則
pip install greenlet
from greenlet import greenlet import time def 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完成多任務(wù)
首先使用
pip install gevent
進(jìn)行安裝
gevent是對greenlet的再次封裝,使用起來更加簡便,當(dāng)有耗時(shí)操作時(shí)會自動(dòng)切換到其他協(xié)程。gevent封裝了常用的耗時(shí)操作,如thread、socket、time、multiprocessing等模塊。
import gevent import time from gevent import monkey # 打補(bǔ)丁,不需要改原來的耗時(shí)操作,否則是要使用gevent提供的模塊 monkey.patch_all() def f(n): for i in range(n): print(gevent.getcurrent(), i) # 使用gevent提供的耗時(shí)模塊 # 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() # 一次性添加全部的任務(wù) gevent.joinall([g1,g2,g3])
總結(jié)
以上所述是小編給大家介紹的python多任務(wù)之協(xié)程的使用詳解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
