我试图寻找答案,但找不到任何相关内容。因此,决定要求。
我有一个脚本A.在脚本A的开头,它在一个单独的线程中调用脚本B(或一个函数,可以工作)。
A继续做一些任务。我想继续执行脚本A,直到脚本B没有完成。
在继续执行A的任务时,如何听B的完成?
例如,
Call Script B using subprocess, import file and run function (either way)
while(1):
count=count+1
if script B ended:
break
任何人都可以说明如何检查“脚本B已结束”部分吗?
答案 0 :(得分:0)
这是一个非常简单的方法来做你想做的事情:
import time
from threading import Thread
def stupid_work():
time.sleep(4)
if __name__ == '__main__':
t = Thread(target=stupid_work)
t.start()
while 1:
if not t.is_alive():
print 'thread is done'
break # or whatever
else:
print 'thread is working'
time.sleep(1)
线程将在完成后死亡,因此您只需间歇性地检查它是否仍然存在。你没有提到你想要一个返回值。如果这样做,则可以将目标函数传递给队列,并将if not t.is_alive()
替换为if not q.empty()
。然后执行q.get()
以在准备好时检索返回值。并确保让目标将返回值放入队列中,否则您将等待很长时间。
答案 1 :(得分:0)
如果你正在使用子进程模块,你可以这样做。
from subprocess import Popen
proc = Popen(["sleep", "100"])
while True:
if proc.poll() is not None:
print("proc is done")
break
有关子流程和民意调查的更多信息here。