本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
本篇文章來自騰訊云 作者:孤獨的明月
( 想要學習Python?Python學習交流群:1039649593,滿足你的需求,資料都已經上傳群檔案流,可以自行下載!還有海量最新2020python學習資料, )
協程
協程,又稱微執行緒,纖程,英文名Coroutine,
協程是python個中另外一種實作多任務的方式,只不過比執行緒更小占用更小執行單元(理解為需要的資源),為啥說它是一個執行單元,因為它自帶CPU背景關系,這樣只要在合適的時機, 我們可以把一個協程 切換到另一個協程,只要這個程序中保存或恢復 CPU背景關系那么程式還是可以運行的,
通俗的理解:在一個執行緒中的某個函式,可以在任何地方保存當前函式的一些臨時變數等資訊,然后切換到另外一個函式中執行,注意不是通過呼叫函式的方式做到的,并且切換的次數以及什么時候再切換到原來的函式都由開發者自己確定
協程和執行緒差異
在實作多任務時, 執行緒切換從系統層面遠不止保存和恢復 CPU背景關系這么簡單,作業系統為了程式運行的高效性每個執行緒都有自己快取Cache等等資料,作業系統還會幫你做這些資料的恢復操作,所以執行緒的切換非常耗性能,但是協程的切換只是單純的操作CPU的背景關系,所以一秒鐘切換個上百萬次系統都抗的住,
簡單實作協程
import time def task1(): while True: print("--1--") time.sleep(0.1) yield def task2(): while True: print("--2--") time.sleep(0.1) yield def main(): t1 = task1() t2 = task2() while True: next(t1) next(t2) if __name__ == '__main__': main() """ --1-- --2-- --1-- --2-- --1-- --2-- --1-- --2-- --1-- --2-- --1-- --2-- --1-- --2-- --1-- --2-- --1-- --2-- --1-- --2-- --1-- 省略.... """
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/238892.html
標籤:Python
