併發處理隨想-多進程與多線程

爲了最大限度利用機器的CPU資源,可以用多進程和多線程兩種方式。

多進程採用fork函數,子進程完全複製父進程fork函數調用的狀態,使用獨立內存空間,子進程與子進程以及父進程相互獨立,就算某個子進程掛了,也不會影響其他子進程,特別適合於Web服務,可以確保用戶體驗。但是進程不能太多,否則資源都消耗在進程切換上。

多線程在進程內部創建,共享進程內存空間,線程創建的開銷相對進程較小,但某個線程異常會導致整個進程退出。


多進程和多線程應該配合使用,個人覺得原則如下:

1、在程序啓動的時候,可以創建多進程任務,在程序運行過程中,可以創建多線程任務。

2、相互獨立的任務,可以採用多進程,數據關聯性較大的任務,可以採用多線程。


Python必須採用多進程,因爲Python的GIL-Global Interpreter Lock機制,只能用到一個核。

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