python中的循环调用一个c ++程序,并将在一段时间后返回循环

时间:2014-05-14 15:51:15

标签: python for-loop time-limiting

我有两个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()

1 个答案:

答案 0 :(得分:0)

您需要添加

pool.join()

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