我有一个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),但它不是很好的编程习惯)
答案 0 :(得分:5)
您希望修改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()