【发布时间】:2016-04-22 08:23:32
【问题描述】:
我了解multiprocessing.Queue has to be passed to subprocess through inheritance。但是,当我尝试通过消息传递将Pipe 传递给子进程时,就像下面的代码一样,我得到的错误并不是说“管道只能通过继承在进程之间共享”。相反,它在q.get() 处失败,错误为TypeError: Required argument 'handle' (pos 1) not found。我想知道是否有可能这样做?假设管道是使用 linux 命名管道实现的,那么重要的是管道的名称,它可能是要序列化并在进程之间传递的状态,对吗?
from multiprocessing import Process, Pipe, Queue
def reader(q):
output_p = q.get()
msg = output_p.recv()
while msg is not None:
msg = output_p.recv()
if __name__ == '__main__':
q = Queue()
reader_p = Process(target=reader, args=(q,))
reader_p.start() # Launch the reader process
output_p, input_p = Pipe(True)
q.put(output_p)
input_p.send('MyMessage')
input_p.send(None)
reader_p.join()
【问题讨论】:
标签: python pipe multiprocessing python-multiprocessing