我有两个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()
答案 0 :(得分:0)
您需要添加
pool.join()
在主循环结束时,避免在内部循环完成之前终止python进程。否则主线程不会等待池中的线程。