【发布时间】:2013-08-11 16:55:59
【问题描述】:
假设我有一个生成一些数据的进程,并且这些数据被两个相互独立的不同进程使用。
解决此问题的一种方法是将生成的数据写入文件,然后让其他两个进程从文件中读取。如果文件大小不大,这可以正常工作,但如果有大量数据,则 IO 会变得昂贵。
如果我只有一个进程使用数据,我可以使用os.pipe() 连接这两个进程,并将数据从一个进程的输出汇集到另一个进程的输入。
但是,由于我有两个消费者进程,我不确定是否有办法复制管道的读取端,以便两个消费者都可以从中读取。
【问题讨论】:
-
生产者不能把相同的数据输出到两个不同的输出管道吗?
-
您的目标是什么平台?
-
两个进程都想要所有数据?我认为您必须发送两次数据。文件或 mmap 文件的一个优点是您不会因为其中一个进程读取数据的速度很慢而导致程序停止运行。
-
@SvenMarnach,我只针对 CentOS 5/6,所以特定于操作系统的解决方案很好。
标签: python subprocess multiprocessing