1

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

这是我到目前为止的位置:

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()

在为解决方案搜索 SO 之后,我了解到使用多处理可能是多余的,但我需要一些方法来限制工作的核心数量。

4

1 回答 1

1

由@JF 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()
于 2012-12-03T06:28:50.360 回答