4
在Python中,它提供了很多方法來在模塊多處理進程之間進行通信,Pipe
,Queue
,Value
, Array
和Manager
。哪一個是更好的選擇?如何在管道,隊列,值,數組和管理器之間選擇進程間通信?
在Python中,它提供了很多方法來在模塊多處理進程之間進行通信,Pipe
,Queue
,Value
, Array
和Manager
。哪一個是更好的選擇?如何在管道,隊列,值,數組和管理器之間選擇進程間通信?
如果要實現消息傳遞,請使用管道和隊列。 如果要實現共享memeory,請使用值和數組。 如果要將面向對象的接口公開到多個進程,請使用管理器。
Pipe
是良好的1對1通信或用於字節級協議:
Queue
類似於單向管,但可以以許多對許多場景工作:
隊列使用管道和一些鎖/信號量來實現。
Value
和Array
:
管理者:
Value
和Array
是輕量級的方法來共享內存。根據我的經驗,使用SyncManager
和AutoProxy
can be huge的開銷。如果您可以使用Value
或Array
解決您的問題,請使用它們。SyncManager
可能對於向多個進程公開面向對象的接口非常有用,除非它不太頻繁地調用。