欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2019年11月22日 09:34:13   作者:小飛俠v科比  
這篇文章主要介紹了Python協(xié)程 yield與協(xié)程greenlet簡單用法,簡要講述了協(xié)程的概念、原理,并結(jié)合實例形式分析了Python協(xié)程 yield與協(xié)程greenlet基本使用方法,需要的朋友可以參考下

本文實例講述了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)層面遠不止保存和恢復(fù) CPU上下文這么簡單。 操作系統(tǒng)為了程序運行的高效性每個線程都有自己緩存Cache等等數(shù)據(jù),操作系統(tǒng)還會幫你做這些數(shù)據(jù)的恢復(fù)操作。 所以線程的切換非常耗性能。但是協(xié)程的切換只是單純的操作CPU的上下文,所以一秒鐘切換個上百萬次系統(tǒng)都抗的住。

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

import time
def 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-8
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中運行
gr1.switch()

運行效果

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

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

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

相關(guān)文章

  • Python?創(chuàng)建格式化字符串方法

    Python?創(chuàng)建格式化字符串方法

    這篇文章主要介紹了Python?創(chuàng)建格式化字符串方法,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • python錯誤提示:Errno?2]?No?such?file?or?directory的解決方法

    python錯誤提示:Errno?2]?No?such?file?or?directory的解決方法

    我相信很多人在學(xué)習(xí)Python的時候,特別是在open文件的時候總還碰到,還報錯IOError:[Errno?2]沒有這樣的文件或目錄:'E://aaa.txt',這篇文章主要給大家介紹了關(guān)于python錯誤提示:Errno?2]?No?such?file?or?directory的解決方法,需要的朋友可以參考下
    2022-02-02
  • 如何真正的了解python裝飾器

    如何真正的了解python裝飾器

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于如何真正的了解python裝飾器的相關(guān)文章,需要的朋友們可以參考下。
    2020-08-08
  • python基于socket模擬實現(xiàn)ssh遠程執(zhí)行命令

    python基于socket模擬實現(xiàn)ssh遠程執(zhí)行命令

    這篇文章主要介紹了python基于socket模擬實現(xiàn)ssh遠程執(zhí)行命令,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-12-12
  • python實現(xiàn)按長寬比縮放圖片

    python實現(xiàn)按長寬比縮放圖片

    這篇文章主要為大家詳細介紹了python實現(xiàn)按長寬比縮放圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • openCV入門學(xué)習(xí)基礎(chǔ)教程第三篇

    openCV入門學(xué)習(xí)基礎(chǔ)教程第三篇

    pencv是用于快速處理圖像處理、計算機視覺問題的工具,支持多種語言進行開發(fā)如c++、python、java等,下面這篇文章主要給大家介紹了關(guān)于openCV入門學(xué)習(xí)基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Python3 串口接收與發(fā)送16進制數(shù)據(jù)包的實例

    Python3 串口接收與發(fā)送16進制數(shù)據(jù)包的實例

    今天小編就為大家分享一篇Python3 串口接收與發(fā)送16進制數(shù)據(jù)包的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • Python3下錯誤AttributeError: ‘dict’ object has no attribute’iteritems‘的分析與解決

    Python3下錯誤AttributeError: ‘dict’ object has no attribute’ite

    這篇文章主要跟大家介紹了關(guān)于在Python3下錯誤AttributeError: 'dict' object has no attribute 'iteritems'的分析與解決方法,文中介紹的非常詳細,對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-07-07
  • Python實現(xiàn)多線程抓取妹子圖

    Python實現(xiàn)多線程抓取妹子圖

    本文給大家匯總了3款由Python制作的多線程批量抓取美圖的代碼,主要是將獲取圖片鏈接任務(wù)和下載圖片任務(wù)用線程分開來處理了,而且這次的爬蟲不僅僅可以爬第一頁的圖片鏈接的,有類似需求的小伙伴可以參考下。
    2015-08-08
  • 淺談python腳本設(shè)置運行參數(shù)的方法

    淺談python腳本設(shè)置運行參數(shù)的方法

    今天小編就為大家分享一篇淺談python腳本設(shè)置運行參數(shù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12

最新評論