Python 2.7 多重处理

标签 python multiprocessing

我正在努力解决这个问题。我在网上没有找到太多好的例子,可以清楚地看到多处理的情况。我正在使用 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/

相关文章:

python - 正则表达式将匹配项存储在错误的捕获组中

python - 如何在 Pandas 中有条件地交换列

python - 使用线性插值调整 numpy ndarray 的大小

python-3.x - 多处理 HDF5 文件读取,更好的是,多个连接或重复生成

python - 使用 celery 任务中的多处理池引发异常

Python 多处理 : processes do not start

python - 使用 autograd 计算 tSNE 梯度

python - Popen 远程命令

Python - Multiprocessing.processes 从可执行文件运行时成为主进程的副本

python - 我可以使用 Numba、矢量化或多处理加速这种空气动力学计算吗?