1

我有两个 for 循环,内部的一个调用一个 c++ 程序(这里由编辑器 emacs 代替),该程序必须在一定时间后终止。此外,对于一个浓度,每个“加速度”(1、2、3、4)应并行计算以加速,然后再为下一个浓度计算每个加速度。

我的问题是,使用 timelimit 终止 c++ 程序时,python 程序不会返回到计算下一个浓度的循环,它只是停止。

我已经编写了一个更简单的程序,并尝试使用子进程打开 c++ 程序,但它在一段时间后没有终止。我也使用了时间限制。感谢帮助!

#!/usr/bin/python2.7
from multiprocessing import Pool
import os
import subprocess as sub

x = set([1, 2, 3, 4, ])
y = set([11, 21, ])

def j_in_y(i):
     for j in y: #concentration
         print i+j
         cll = 'timelimit -t5 -T2 emacs' #c++ program call, for test emacs
         os.system(cll)

for i in x: #acceleration
     pool = Pool(processes=3)
     pool.apply_async(j_in_y, (i,))
     pool.close()
     pool.join()
4

1 回答 1

0

您需要添加

pool.join()

在你的主循环结束时,避免你的 python 进程在内循环完成之前终止。否则主线程不会等待池中的线程。

于 2014-05-14T16:09:34.160 回答