等到其他python脚本结束

时间:2012-08-09 12:53:53

标签: python module system subprocess

我有一个python脚本...基本上调用另一个python脚本。在其他python脚本中,它产生了一些线程...如何让调用脚本等到被调用脚本完全运行完毕?

这是我的代码:

while(len(mProfiles) < num):
        print distro + " " + str(len(mProfiles))
        mod_scanProfiles.main(distro)
        time.sleep(180)
        mProfiles = readProfiles(mFile,num,distro)
        print "yoyo"

我该怎么做,,,等到mod_scanProfiles.main()和所有线程完全完成? (我现在使用time.sleep(180),但它不是很好的编程习惯)

1 个答案:

答案 0 :(得分:5)

您希望修改mod_scanProfiles.main中的代码,直到所有线程都完成为止。

假设您在该功能中拨打subprocess.Popen,请执行以下操作:

# in mod_scanPfiles.main:
p = subprocess.Popen(...)
p.wait() # wait until the process completes.

如果您目前没有等待线程结束,您还需要致电Thread.joindocs)等待他们完成。例如:

# assuming you have a list of thread objects somewhere
threads = [MyThread(), ...]
for thread in threads:
    thread.start()
for thread in threads:
    thread.join()