python高併發部署方案

多進程和多線程之間的區別比較

多線程

在基於線程的多任務的環境中,所有進程至少有一個線程,但是它們可以具有多個任務。這意味着單個程序可以併發執行兩個或者多個任務。


簡而言之,線程就是把一個進程分爲很多片,每一片都可以是一個獨立的流程。這已經明顯不同於多進程了,進程是一個拷貝的流程,而線程只是把一條河流截成很 多條小溪。它沒有拷貝這些額外的開銷,但是僅僅是現存的一條河流,就被多線程技術幾乎無開銷地轉成很多條小流程。


同一進程的所有線程是共享同一內存,多線程則可以共享全局變量。


多線程與多進程之間的優缺點比較

多進程優點:


1、每個進程互相獨立,不影響主程序的穩定性,子進程崩潰沒關係;


2、通過增加CPU,就可以容易擴充性能;


3、可以儘量減少線程加鎖/解鎖的影響,極大提高性能,就算是線程運行的模塊算法效率低也沒關係;


4、每個子進程都有2GB地址空間和相關資源,總體能夠達到的性能上限非常大。


 多進程缺點:


1、邏輯控制複雜,需要和主程序交互;


2、需要跨進程邊界,如果有大數據量傳送,就不太好,適合小數據量傳送、密集運算 多進程調度開銷比較大;


3、最好是多進程和多線程結合,即根據實際的需要,每個CPU開啓一個子進程,這個子進程開啓多線程可以爲若干同類型的數據進行處理。當然你也可以利用多線程+多CPU+輪詢方式來解決問題……


多線程的優點:


1、無需跨進程邊界;


2、程序邏輯和控制方式簡單;


3、所有線程可以直接共享內存和變量等;


4、線程方式消耗的總資源比進程方式好。


多線程缺點:


1、每個線程與主程序共用地址空間,受限於2GB地址空間;


2、線程之間的同步和加鎖控制比較麻煩;


3、一個線程的崩潰可能影響到整個程序的穩定性;


4、到達一定的線程數程度後,即使再增加CPU也無法提高性能,例如Windows Server 2003,大約是1500個左右的線程數就快到極限了(線程堆棧設定爲1M),如果設定線程堆棧爲2M,還達不到1500個線程總數;


5、線程能夠提高的總性能有限,而且線程多了之後,線程本身的調度也是一個麻煩事兒,需要消耗較多的CPU。


對於耗費cpu的操作,例如計算。多進程優於多線程

對於io操作,多線程優於多進程

flask高併發部署方案參考鏈接https://blog.csdn.net/zmy941110/article/details/89639883


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章