1

我试图寻找答案,但找不到任何相关的东西。因此,决定询问。

我有一个脚本 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 结束”部分?

4

2 回答 2

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()准备好时执行 a 以检索返回值。并确保让目标将返回值放入队列中,否则您将等待很长时间。

于 2013-05-01T22:45:57.150 回答
0

如果您使用的是 subprocess 模块,您可以执行类似的操作。

from subprocess import Popen
proc = Popen(["sleep", "100"])

while True:
    if proc.poll() is not None:
        print("proc is done")
        break

更多关于 subprocess 和 poll here

于 2013-05-01T22:50:26.590 回答