目录

时间:2017-05-05 20:38:39

标签: python multithreading subprocess

我正在尝试使用shell上的python自动进行手动模拟测试。我将数据设置在父目录中的子文件夹下,如下所示:

/vol/parent/child1
/vol/parent/child2
/vol/parent/child3
...
/vol/parent/childn

我有单独的脚本,它们在每个子目录中运行一个测试作业(也是一个python程序)。脚本使用subprocess.Popen,示例如下:

folder_list = next(os.walk(parent))[1]

for child in folder_list:
 f = open("/vol/testjob1/nohup.out", "w")
 p = subprocess.Popen([<...testjob1.py...test parameters>], cwd = '/vol01/testjob1/', stdout=f)

这将在每个子文件夹上运行作业,每个线程1个作业。

通常,我等待所有n个作业完成,然后运行我的下一个测试(比如testjob2),这也是一个类似的子进程类型程序。

我正在尝试将所有这些子流程测试脚本合并到一个主脚本中。主要目标是当作业在1个线程上完成时,下一个子进程从该线程开始。我尝试在最后添加p.wait(),但这意味着它将等待每个线程在启动下一个线程之前完成(这会杀死并行运行这些作业的目的)。

如何使用subprocess.popen,p.wait()和for循环的组合来确保1个进程在另一个进程之后启动,如下所示:

(child1)| thread1: Subprocess1 (done)--> start subprocess2 (done)--> start subprocess3...
(child2)| thread2: Subprocess1 (done)--> start subprocess2 (done)--> start subprocess3...
...
(childn)| threadn: Subprocess1 (done)--> start subprocess2 (done)--> start subprocess3...

0 个答案:

没有答案