1. 程式人生 > >[Python]Multiprocessing vs Threading Python

[Python]Multiprocessing vs Threading Python

問題的地址:

http://stackoverflow.com/questions/3044580/multiprocessing-vs-threading-python

#大多隻是曉得意思,翻譯起來真是感覺無力,歡迎吐槽指正。

問題:

我想知道multiprocessing比threading模組有哪些優點?

我知道multiprocessing脫離了全域性解釋鎖,但是還有其他優點它有但是

threading無法做到的嗎?

其中一個答案:

Multiprocessing(多程序)
優點:
*單獨分配的記憶體空間
*通常程式碼很簡單
*可以發回多CPU和多核的優點
*破除了cpython中全域性解釋鎖GIL 的約束
*消除了很多原子同步操作當然除非你要用到了記憶體共享(它比一個IPC通訊模型要多的多)
*子程序時可中斷/可殺死的
*Python multiprocessing  模組包含了很多有用的抽象介面就像threading.Thread類似
*cpython處理 CPU繫結程序必須的模組

缺點:
*程序間通訊比較複雜,開銷比較大
*消耗更多的記憶體

Threading(多執行緒)
優點:
*輕量級-記憶體消耗很小
*記憶體共享 -上下文切換更容易
*更容易做使用者介面
*cpython C 擴充套件模組適當的釋放 GIL就能實現並行
*對於IO繫結的應用來說是個很不錯的選擇

缺點:
*cpython -受制於GIL
*沒有中斷/殺死 機制
*如果不是一個命令佇列或者是訊息泵模型,則可能需要自己實現原子同步。
*程式碼常常比較難懂,不容易寫。 要考慮很多競爭的狀況。