我正在努力解决这个问题。我在网上没有找到太多好的例子,可以清楚地看到多处理的情况。我正在使用 python 2.7 我想做的是让 python 脚本监听输入,然后在执行时间敏感任务的同时如果收到输入则对其进行操作。所以我不能让监听中断脚本其余部分的流程。
这是我的设置:
def listen_process():
while 1 < 2:
print "blue"
q = multiprocessing.Process(target=listen_process())
q.start()
print red
我希望我的输出看起来像这样:
blue
blue
red
blue
...
相反,我得到的是
blue
blue
blue
...
只有当我打断它时我才会变红。
在真实的代码中,我正在对一个新文件进行 os.system 调用,该文件本质上执行 while 循环,但我不明白为什么调用不同的文件会产生任何差异......
最佳答案
问题如下:
q = multiprocessing.Process(target=listen_process())
发生的情况是表达式target=listen_process()没有将函数listen_process分配给关键字参数listen,而是将函数listen_process分配给关键字参数listen它将函数调用的结果分配给目标。
这意味着在第二个线程运行之前,listen_process 正在主线程中被调用。这当然不是您想要的。
将该行更改为:
q = multiprocessing.Process(target=listen_process)
你会没事的。
关于Python 2.7 多重处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32131360/