我是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内置。 谢谢你的时间!
答案 0 :(得分:5)
使用subprocess.Popen
在子流程中运行其他可执行文件。
使用multiprocessing.Process
在子流程中运行Python callables(例如函数)。
这两者不可互换。