协程(Coroutine)与多线程,多进程
執(zhí)行多個任務可以使用多線程或多進程。
多進程中,同一個變量,各自有一份拷貝存在于每個進程中,互不影響
多線程中,所有變量都由所有線程共享。而線程間的切換是系統(tǒng)進行調(diào)度,無法控制,所以可能
一個進程中的多個線程可能會同時調(diào)用某個變量的值,造成變量值的混亂,這時就引進了線程鎖,但是線程鎖又容易造成死鎖,也阻止了多線程的并發(fā)。
另外Python 解釋器由于設計時有GIL全局鎖,導致了多線程無法利用多核。多線程的并發(fā)在Python中就是一個美麗的夢。
?
在Thread和Process中,應當優(yōu)選Process,因為Process更穩(wěn)定,而且,Process可以分布到多臺機器上,而Thread最
多只能分布到同一臺機器的多個CPU上。
多進程會消耗系統(tǒng)較多的資源,系統(tǒng)支持的進程數(shù)也有限,雖然運行任務較穩(wěn)定
多線程的單個線程崩潰就會使整個進程崩潰,又有線程全局鎖。
?
異步IO支持,就可以用單進程單線程模型來執(zhí)行多任務,這種全新的模型稱為事件驅動模型。
協(xié)程就是一個異步IO的支持模式。協(xié)程這種子程序,可以在執(zhí)行的時候中斷,等需要耗時的操作執(zhí)行完后發(fā)消息通知主線程,
然后再接著從剛才中斷的地方繼續(xù)執(zhí)行。這樣在任務間的切換是通過程序內(nèi)部定義來控制的,也不需要線程鎖,執(zhí)行效率高。
轉載于:https://www.cnblogs.com/Ting-light/p/9547353.html
總結
以上是生活随笔為你收集整理的协程(Coroutine)与多线程,多进程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到非常多的蛇预示着什么
- 下一篇: 12-事件委托(事件代理)