【发布时间】:2011-09-01 23:35:10
【问题描述】:
我是 Python 的新手。我最近尝试使用 Python 脚本调用控制台 exe,这是一个需要很长时间的过程。我将允许在 CPU 允许的范围内多次调用 exe。当 exe 完成其工作时。 CPU 可以分配给其他新作业。所以我想我可能需要多进程控制机制。
在切换到 multiprocessing.Process 之前,我可以从 subprocess.Popen 调用我的 exe。它工作正常。但是,在我切换到 multiprocessing.Process 之后。似乎 start() 不能调用我的 exe (我可以从 CPU 性能上看出区别)。任何人都可以提供线索吗?仅供参考,我正在使用以下代码。
以前使用子进程:
cmd = exeFileName + r" " + inputArguments
a = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
现在使用多进程:
b = multiprocessing.Process(target=exeFileName,args=inputArguments)
b.start()
您可能已经注意到,我的 exe 需要输入参数才能工作。所以在子进程代码中,我使用一串cmd来捕获整行。在多处理代码中,我不是。它已经内置了一个目标和参数。 感谢您的宝贵时间!
【问题讨论】:
-
终于搞定了。我最后放弃了多处理。相反,我使用 subprocess 和它自己的 poll() 方法来告诉我 exe 是否已终止。然后将它们附加到线程。它现在似乎工作了。
标签: python subprocess multiprocessing