協程

協程,又稱微線程,纖程。英文名Coroutine。python

協程是啥

協程是python箇中另一種實現多任務的方式,只不過比線程更小佔用更小執行單元(理解爲須要的資源)。 爲啥說它是一個執行單元,由於它自帶CPU上下文。這樣只要在合適的時機, 咱們能夠把一個協程 切換到另外一個協程。 只要這個過程當中保存或恢復 CPU上下文那麼程序仍是能夠運行的。緩存

通俗的理解:在一個線程中的某個函數,能夠在任何地方保存當前函數的一些臨時變量等信息,而後切換到另一個函數中執行,注意不是經過調用函數的方式作到的,而且切換的次數以及何時再切換到原來的函數都由開發者本身肯定函數

協程和線程差別

在實現多任務時, 線程切換從系統層面遠不止保存和恢復 CPU上下文這麼簡單。 操做系統爲了程序運行的高效性每一個線程都有本身緩存Cache等等數據,操做系統還會幫你作這些數據的恢復操做。 因此線程的切換很是耗性能。可是協程的切換隻是單純的操做CPU的上下文,因此一秒鐘切換個上百萬次系統都抗的住。性能

簡單實現協程

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() 

運行結果:spa

----work1---
----work2---
----work1---
----work2---
----work1---
----work2---
----work1---
----work2---
----work1---
----work2---
----work1---
----work2---
...省略...
相關文章
相關標籤/搜索