麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Python > 正文

Python協(xié)程 yield與協(xié)程greenlet簡單用法示例

2024-09-09 19:02:57
字體:
供稿:網(wǎng)友

本文實例講述了Python協(xié)程 yield與協(xié)程greenlet簡單用法。分享給大家供大家參考,具體如下:

協(xié)程

協(xié)程,又稱微線程,纖程。英文名Coroutine。

協(xié)程是啥

協(xié)程是python個中另外一種實現(xiàn)多任務(wù)的方式,只不過比線程更小占用更小執(zhí)行單元(理解為需要的資源)。 為啥說它是一個執(zhí)行單元,因為它自帶CPU上下文。這樣只要在合適的時機, 我們可以把一個協(xié)程 切換到另一個協(xié)程。 只要這個過程中保存或恢復(fù) CPU上下文那么程序還是可以運行的。

通俗的理解:在一個線程中的某個函數(shù),可以在任何地方保存當(dāng)前函數(shù)的一些臨時變量等信息,然后切換到另外一個函數(shù)中執(zhí)行,注意不是通過調(diào)用函數(shù)的方式做到的,并且切換的次數(shù)以及什么時候再切換到原來的函數(shù)都由開發(fā)者自己確定

協(xié)程和線程差異

在實現(xiàn)多任務(wù)時, 線程切換從系統(tǒng)層面遠(yuǎn)不止保存和恢復(fù) CPU上下文這么簡單。 操作系統(tǒng)為了程序運行的高效性每個線程都有自己緩存Cache等等數(shù)據(jù),操作系統(tǒng)還會幫你做這些數(shù)據(jù)的恢復(fù)操作。 所以線程的切換非常耗性能。但是協(xié)程的切換只是單純的操作CPU的上下文,所以一秒鐘切換個上百萬次系統(tǒng)都抗的住。

簡單實現(xiàn)協(xié)程

import timedef work1():  while True:    print("----work1---")    yield    time.sleep(0.5)def work2():  while True:    print("----work2---")    yield    time.sleep(0.5)def main():  w1 = work1()  w2 = work2()  while True:    next(w1)    next(w2)if __name__ == "__main__":  main()

運行結(jié)果:

----work1---
----work2---
----work1---
----work2---
----work1---
----work2---
----work1---
----work2---
----work1---
----work2---
----work1---
----work2---
...省略...

greenlet

為了更好使用協(xié)程來完成多任務(wù),python中的greenlet模塊對其封裝,從而使得切換任務(wù)變的更加簡單

安裝方式

使用如下命令安裝greenlet模塊:

sudo pip3 install greenlet
#coding=utf-8from 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中運行g(shù)r1.switch()

運行效果

---A--
---B--
---A--
---B--
---A--
---B--
---A--
---B--
...省略...

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫程序設(shè)計入門教程》及《Python常見數(shù)據(jù)庫操作技巧匯總》

希望本文所述對大家Python程序設(shè)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 一本色道精品久久一区二区三区 | 性插视频| 在线观看精品视频 | 欧美久久久一区二区三区 | 国产精品久久久久无码av | 国产一国产一级毛片视频在线 | av免费在线播放 | 成人444kkkk在线观看 | av手机免费在线观看 | 一本色道久久综合亚洲精品图片 | 日本免费aaa观看 | 久久精品一区二区三区四区五区 | 国产成人精品二区 | 特一级黄色毛片 | h视频免费在线观看 | 超碰97最新 | 91麻豆蜜桃一区二区三区 | 97香蕉超级碰碰久久免费软件 | 黄色视屏免费观看 | 一级一级一级一级毛片 | 国内xxxx乱子另类 | av视屏| 国产亚洲综合精品 | 亚洲码无人客一区二区三区 | 久久91精品国产91久久yfo | 在线观看中文字幕国产 | 一级黄色在线观看 | 91精品一区二区综合在线 | 国产精品亚洲综合一区二区三区 | 国产精品久久久久久久久粉嫩 | 素人视频免费观看 | 国产精品久久久久久久久久久久午夜 | 91 在线观看 | 久久综合伊人 | 天天草天天干天天射 | 国产一级毛片国语版 | 国产精品久久久久久久av三级 | 激情在线视频 | 欧美黄色一级生活片 | 视频在线中文字幕 | 黄色大片高清 |