是python multiprocessing.Process start()执行与subprocess.Popen相同的工作

时间:2011-05-25 17:42:21

标签: python subprocess multiprocessing

我是Python的新手。我最近尝试使用Python脚本来调用控制台exe,这是一个需要很长时间的过程。我将允许在CPU允许的情况下多次调用exe。当exe完成它的工作。可以将CPU分配给其他新作业。所以我想我可能需要多个过程控制机制。

在切换到multiprocessing.Process之前,我可以从subprocess.Popen调用我的exe。它工作正常。但是,在我切换到multiprocessing.Process之后。似乎start()无法调用我的exe(我可以说出与CPU性能的区别)。任何人都可以提供这方面的线索吗?仅供参考,我使用以下代码。

以前使用subrpocess:

cmd = exeFileName + r" " + inputArguments

a = subprocess.Popen(cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

现在使用multipleprocess:

b = multiprocessing.Process(target=exeFileName,args=inputArguments)

b.start()

您可能已经注意到,我的exe需要输入参数才能工作。所以在子进程代码中,我使用一串cmd来捕获整行。在多处理代码中,我不是。它已经有一个目标和args内置。 谢谢你的时间!

1 个答案:

答案 0 :(得分:5)

使用subprocess.Popen在子流程中运行其他可执行文件。

使用multiprocessing.Process在子流程中运行Python callables(例如函数)。

这两者不可互换。