在python中,它为模块多处理过程之间的通信提供了很多方法,Pipe
,Queue
,Value
,Array
和Manager
。哪个是更好的选择?
答案 0 :(得分:5)
如果要实现消息传递,请使用管道和队列。 如果要实现共享内存,请使用Value和Array。 如果要将面向对象的接口公开给多个进程,请使用Managers。
Pipe
适用于1对1通信或字节级协议:
Queue
类似于单向管道,但可能适用于多对多场景:
使用管道和一些锁/信号量来实现队列。
Value
和Array
:
ctypes
)管理者:
Value
和Array
是共享内存的轻量级方法。根据我的经验,使用SyncManager
和AutoProxy
can be huge的开销。如果您可以使用Value
或Array
解决问题,请使用它们。 SyncManager
可能有助于将面向对象的接口暴露给多个进程,除非它不会过于频繁地调用。