问题描述
|
我是Python的新手。我最近尝试使用Python脚本调用控制台exe,这是一个需要很长时间的过程。我将允许exe被CPU允许多次调用。并且当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)
现在使用多进程:
b = multiprocessing.Process(target=exeFileName,args=inputArguments)
b.start()
您可能会注意到,我的exe需要输入参数才能起作用。因此,在子流程代码中,我使用一串cmd来捕获整行。在多处理代码中,我不是。它已经有一个目标和内置的args。
感谢您的时间!
解决方法
使用“ 2”在子进程中运行其他可执行文件。
使用ѭ3来在子进程中运行Python可调用对象(例如函数)。
两者不可互换。