1

这是我的另一个问题。我发现这个错误只发生在 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一个双向连接对象给 function f()。当进程p启动时,我希望r.recv()阻塞(据我所知,这意味着这个进程将无限期地等待,直到有东西通过管道),直到主进程通过 with 发送一些对象q.send

然后p.join()应该让主进程等到p运行它的过程。

但是什么都没有发生。如果我向 中添加一条print语句f(),那里也不会发生任何事情,就好像f()从来没有运行过并且p.start()没有功能一样。

你能解释一下为什么这在 PyDev 中不起作用以及可能会修复什么吗?

4

0 回答 0