1. 程式人生 > >協程(Coroutine)與多線程,多進程

協程(Coroutine)與多線程,多進程

就是 主線程 操作 pytho 異步io 使用 thread 但是 也有

執行多個任務可以使用多線程或多進程。

多進程中,同一個變量,各自有一份拷貝存在於每個進程中,互不影響

多線程中,所有變量都由所有線程共享。而線程間的切換是系統進行調度,無法控制,所以可能

一個進程中的多個線程可能會同時調用某個變量的值,造成變量值的混亂,這時就引進了線程鎖,但是線程鎖又容易造成死鎖,也阻止了多線程的並發。

另外Python 解釋器由於設計時有GIL全局鎖,導致了多線程無法利用多核。多線程的並發在Python中就是一個美麗的夢。

在Thread和Process中,應當優選Process,因為Process更穩定,而且,Process可以分布到多臺機器上,而Thread最

多只能分布到同一臺機器的多個CPU上。

多進程會消耗系統較多的資源,系統支持的進程數也有限,雖然運行任務較穩定

多線程的單個線程崩潰就會使整個進程崩潰,又有線程全局鎖。

異步IO支持,就可以用單進程單線程模型來執行多任務,這種全新的模型稱為事件驅動模型。

協程就是一個異步IO的支持模式。協程這種子程序,可以在執行的時候中斷,等需要耗時的操作執行完後發消息通知主線程,

然後再接著從剛才中斷的地方繼續執行。這樣在任務間的切換是通過程序內部定義來控制的,也不需要線程鎖,執行效率高。

協程(Coroutine)與多線程,多進程