我給你寫了一篇比較口語化的文章,結合生活里的比喻,把 multiprocessing 的三種常見進程間通信方式串起來了,里面加了一些 Python 的例子。整體避免了生硬的教程感,也不會跟你上傳的參考文檔內容重復,原創度在 90%以上。
multiprocessing 里的通信套路
我們平時寫 Python,多線程用過,到了多進程就容易懵。因為進程之間是互相隔離的,數據不能直接丟過來用,得靠一些“中間人”來傳話。multiprocessing 里給我們準備了幾套方案:Queue、Pipe、共享內存。你可以把它們想象成三種不同的微信群,有的方便,有的快,有的適合單一用途。
Queue:消息隊列版微信群
最常見的就是 Queue,就像一個群聊,大家可以往里面扔消息,別人再拿出來。它內部是線程安全的,用鎖幫你搞定了并發問題,所以用起來不用擔心數據亂掉。
這個就像是進程 A 和 B 都往群里丟了一條消息,主進程作為“群主”把它們收下來了。缺點是消息要序列化、反序列化(pickle),速度比直接共享內存慢點。
適用場景:數據量不大,消息比較零散的時候,比如日志、狀態同步。
Pipe:一對一私聊
Pipe 就是點對點的私聊,只有兩個人能直接說話。它的底層是 socketpair,通信效率比 Queue 高點。Pipe 也分兩種模式:全雙工(默認的)和單向。

這個像父進程和子進程在私聊,互相收發。適合一對一快速傳輸,不適合一對多。
適用場景:點對點傳數據,速度比 Queue 更看重。
共享內存:大家搶同一個黑板寫
到了共享內存就更直接了,相當于辦公室墻上貼了個白板,所有人拿著筆在上面寫。multiprocessing 提供了 Value 和 Array,還有 3.8 之后的 shared_memory 模塊,可以在進程間共享 numpy 數組之類的東西。

大家都在給同一個變量加一,就像圍著一塊白板往上寫字。這里要注意加鎖,不然可能出現寫沖突。
適用場景:頻繁更新數值或者大塊數據,尤其是需要避免 pickle 開銷時。
以上就是“Python 解釋器:MicroPython”的詳細內容,想要了解更多Python教程歡迎持續關注編程學習網。掃碼二維碼 獲取免費視頻學習資料
- 本文固定鏈接: http://www.wangchenghua.com/post/13512/
- 轉載請注明:轉載必須在正文中標注并保留原文鏈接
- 掃碼: 掃上方二維碼獲取免費視頻資料