[英]Check if subprocess currently running in any thread using Python
我正在使用threading.Timer函数一次运行多个计时器。 每个计时器结束后,调用的函数将通过“ say”命令使用子进程,如下所示:
subprocess.call(["say", "hello world"])
有时,计时器彼此之间很快就会关闭,然后开始互相交谈。 我如何让他们互相等待,以免彼此重叠?
我仍然希望能够在发生这种情况时在主程序中执行其他操作(例如创建新计时器),所以我认为我不能只使用popen.wait()或.join()
如果say
可执行文件快速运行,则可以锁定其调用:
lock = threading.Lock()
def your_thread_function():
do_something_slow()
with lock:
subprocess.call(["say", "hello world"])
如果say
可执行文件本身很慢,则您必须存储其输出,并仅在调用结束时将其输出(再次锁定):
lock = threading.Lock()
def your_thread_function():
# You can also use subprocess.check_output.
p = subprocess.Popen(["say", "hello world"], stdout=subprocess.PIPE)
out, err = p.communicate()
with lock:
print(out)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.