python 协程_Python多任务协程
生活随笔
收集整理的這篇文章主要介紹了
python 协程_Python多任务协程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
協程
協程,又稱微線程,纖程。英文名Coroutine。
協程是python個中另外一種實現多任務的方式,只不過比線程更小占用更小執行單元(理解為需要的資源)。為啥說它是一個執行單元,因為它自帶CPU上下文。這樣只要在合適的時機, 我們可以把一個協程 切換到另一個協程。只要這個過程中保存或恢復 CPU上下文那么程序還是可以運行的。
通俗的理解:在一個線程中的某個函數,可以在任何地方保存當前函數的一些臨時變量等信息,然后切換到另外一個函數中執行,注意不是通過調用函數的方式做到的,并且切換的次數以及什么時候再切換到原來的函數都由開發者自己確定
協程和線程差異
在實現多任務時, 線程切換從系統層面遠不止保存和恢復 CPU上下文這么簡單。操作系統為了程序運行的高效性每個線程都有自己緩存Cache等等數據,操作系統還會幫你做這些數據的恢復操作。所以線程的切換非常耗性能。但是協程的切換只是單純的操作CPU的上下文,所以一秒鐘切換個上百萬次系統都抗的住。
簡單實現協程
import timedef task1(): while True: print("--1--") time.sleep(0.1) yielddef task2(): while True: print("--2--") time.sleep(0.1) yielddef 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--省略...."""歡迎關注公眾號:Python爬蟲數據分析挖掘,回復【開源源碼】免費獲取更多開源項目源碼
公眾號每日更新python知識和【免費】工具
總結
以上是生活随笔為你收集整理的python 协程_Python多任务协程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智慧交通day04-特定目标车辆追踪03
- 下一篇: python代码计算字数_Python计