python 多進程/多線程/協程 同步異步
阿新 • • 發佈:2018-11-13
習慣 gil str 進程 人的 strong 目的 同步等待 程序
3、 多線程:多線程是程序設計的邏輯層概念,它是進程中並發運行的一段代碼。多線程可以實現線程間的切換執行。多線程的優點很明顯,線程中的處理程序依然是順序執行,符合普通人的思維習慣,所以編程簡單。但是多線程的缺點也同樣明顯,線程的使用(濫用)會給系統帶來上下文切換的額外負擔。並且線程間的共享變量可能造成死鎖的出現。
4、python因為GIL 全局鎖的原因,所以同一時刻只能有一個線程在運行,遇到IO操作才會釋放切換。當我們需要編寫並發爬蟲等IO密集型的程序時,應該選用多線程或者協程;當我們需要科學計算,設計CPU密集型程序,應該選用多進程,更好的利用多個CPU。
這篇主要是對概念的理解:
1、異步和多線程區別:二者不是一個同等關系,異步是最終目的,多線程只是我們實現異步的一種手段。異步是當一個調用請求發送給被調用者,而調用者不用等待其結果的返回而可以做其它的事情。實現異步可以采用多線程技術或則交給另外的進程來處理。多線程的好處,比較容易的實現了 異步切換的思想, 因為異步的程序很難寫的。多線程本身程還是以同步完成,但是應該說比效率是比不上異步的。 而且多線很容易寫, 相對效率也高。
2、異步和同步的區別: 在io等待的時候,同步不會切走,浪費了時間。異步和同步是相對的,同步就是順序執行,執行完一個再執行下一個,需要等待、協調運行。異步就是彼此獨立,在等待某事件的過程中繼續做自己的事,不需要等待這一事件完成後再工作。線程就是實現異步的一個方式。異步是讓調用方法的主線程不需要同步等待另一線程的完成,從而可以讓主線程幹其它的事情。python 多進程/多線程/協程 同步異步