學習筆記 | 協程 概念理解

協程

1、概念:
  • 協程,又稱微線程,纖程,英文名Coroutine。 協程看上去也是子程序,但執行過程中,在子程序內部可中斷,然後轉而執行別的子程序,在適當的時候再返回來接着執行。

例如:

def A() :
	print '1'
	print '2'
	print '3'
	
	def B() :
		print 'x'
		print 'y'
		print 'z'
  • 由協程運行結果可能是12x3yz。在執行A的過程中,可以隨時中斷,去執行B,B也可能在執行過程中中斷再去執行A。但協程的特點在於是一個線程執行。
2)協程和線程區別
  • 那和多線程比,協程最大的優勢就是協程極高的執行效率。因爲子程序切換不是線程切換,而是由程序自身控制,因此,沒有線程切換的開銷,和多線程比,線程數量越多,協程的性能優勢就越明顯。
  • 第二大優勢就是不需要多線程的鎖機制,因爲只有一個線程,也不存在同時寫變量衝突,在協程中控制共享資源不加鎖,只需要判斷狀態就好了,所以執行效率比多線程高很多。
3)其他
  • 在協程上利用多核CPU呢——多進程+協程,既充分利用多核,又充分發揮協程的高效率,可獲得極高的性能。
  • Python對協程的支持還非常有限,用在generator中的yield可以一定程度上實現協程。雖然支持不完全,但已經可以發揮相當大的威力了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章