Python多处理管道不会在PyDev中正确recv(),在其他地方工作正常

时间:2012-05-05 18:50:22

标签: eclipse pydev

这是我的另一个问题。我发现这个错误只发生在PyDev中。如果我从命令行或IDLE运行代码,则会生成正确的输出。在PyDev中,没有任何事情发生:

这适用于Python 3.2.2,Eclipse 3.7.2:

from multiprocessing import Pipe, Process

def f(r):
    print(r.recv())

if __name__ == '__main__':
    q, r = Pipe()
    p = Process(target=f, args=(r,))
    p.start()
    q.send([42, None, 'hello'])
    p.join()

主线程创建一个新的Processp,并将r(一个双向连接对象)发送到函数f()。当进程p启动时,我希望r.recv()阻塞(根据我的理解,这意味着此进程将无限期地等待,直到某些东西通过管道),直到主进程发送一些对象为止与q.send

然后p.join()应该让主进程等到p运行完毕。

但是没有任何事情发生。如果我向print添加f()语句,那么也没有任何结果,好像f()从未运行且p.start()无效。

你能解释为什么这在PyDev中不起作用以及可能修复的内容吗?

0 个答案:

没有答案