5

我有一个调用另一个 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) 但它不是一个好的编程习惯)

4

1 回答 1

7

您想修改代码mod_scanProfiles.main以阻塞,直到它的所有线程都完成。

假设您subprocess.Popen在该函数中进行调用,只需执行以下操作:

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

如果您当前没有等待线程结束,您还需要调用Thread.join( docs ) 来等待它们完成。例如:

# assuming you have a list of thread objects somewhere
threads = [MyThread(), ...]
for thread in threads:
    thread.start()
for thread in threads:
    thread.join()
于 2012-08-09T13:10:05.073 回答