[Python]Multiprocessing vs Threading Python
阿新 • • 發佈:2019-01-07
問題的地址:
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 *沒有中斷/殺死 機制 *如果不是一個命令佇列或者是訊息泵模型,則可能需要自己實現原子同步。 *程式碼常常比較難懂,不容易寫。 要考慮很多競爭的狀況。