gpt4 book ai didi

python - 使用 Popen 的异步子进程

转载 作者:太空宇宙 更新时间:2023-11-03 19:08:59 24 4
gpt4 key购买 nike

使用 Windows 7 + python 2.6,我尝试并行运行模拟模型。我可以通过在文件浏览器中双击可执行文件的多个实例来启动它们。但是,使用 Popen 进行异步调用会导致每个连续实例都会中断前一个实例。就其值(value)而言,可执行文件将文本返回到控制台,但我不需要以交互方式收集结果。

这是我目前所处的位置:

import multiprocessing, subprocess

def run(c):
exe = os.path.join("<location>","folder",str(c),"program.exe")
run = os.path.join("<location>","folder",str(c),"run.dat")
subprocess.Popen([exe,run],creationflags = subprocess.CREATE_NEW_CONSOLE)

def main():
pool = multiprocessing.Pool(3)
for c in range(10):
pool.apply_async(run,(str(c),))
pool.close()
pool.join()

if __name__ == '__main__':
main()

在寻找解决方案后,我了解到使用多处理可能是多余的,但我需要某种方法来限制工作核心的数量。

最佳答案

由@J.F启用。 Sebastian 对 cwd 参数的评论。

import multiprocessing, subprocess

def run(c):
exe = os.path.join("<location>","folder",str(c),"program.exe")
run = os.path.join("<location>","folder",str(c),"run.dat")
subprocess.check_call([exe,run],cwd=os.path.join("<location>","folder"),creationflags = subprocess.CREATE_NEW_CONSOLE)

def main():
pool = multiprocessing.Pool(3)
for c in range(10):
pool.apply_async(run,(str(c),))
pool.close()
pool.join()

if __name__ == '__main__':
main()

关于python - 使用 Popen 的异步子进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13677740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com