【发布时间】:2013-06-06 06:08:37
【问题描述】:
在python中,它提供了很多模块多处理中进程之间的通信方式,Pipe、Queue、Value、Array和Manager。哪一个是更好的选择?
【问题讨论】:
在python中,它提供了很多模块多处理中进程之间的通信方式,Pipe、Queue、Value、Array和Manager。哪一个是更好的选择?
【问题讨论】:
如果您想实现消息传递,请使用管道和队列。 如果要实现共享内存,请使用 Value 和 Array。 如果您想向多个进程公开面向对象的接口,请使用管理器。
Pipe 适用于一对一通信或字节级协议:
Queue 类似于单向管道,但可能适用于多对多场景:
队列是使用管道和一些锁/信号量实现的。
Value 和Array:
ctypes)经理:
Value 和Array 是共享内存的轻量级方法。根据我的经验,使用 SyncManager 和 AutoProxy can be huge 的开销。如果您可以使用Value 或Array 解决您的问题,请使用它们。 SyncManager 可能有助于将面向对象的接口公开给多个进程,除非调用的频率不高。
【讨论】: