Python 如何检查子流程是否已完成?
我通过以下方式开始一个过程:Python 如何检查子流程是否已完成?,python,python-3.x,Python,Python 3.x,我通过以下方式开始一个过程: for i in range(1, processes + 1): hup = MyURLParser() //A class I made p = Process(target = hup.run) p.start() 之后,为了使主线程不会立即退出,我执行以下操作: while (True): print("Main sleeping...") sleep
for i in range(1, processes + 1):
hup = MyURLParser() //A class I made
p = Process(target = hup.run)
p.start()
之后,为了使主线程不会立即退出,我执行以下操作:
while (True):
print("Main sleeping...")
sleep(20)
我如何检查每个子进程是否仍在从主线程运行,而不是执行此操作?然后,我可以在正确的时间打破循环并做其他事情,而不是无限循环。…将所有进程添加到列表中,然后依次添加每个进程:
processes = []
for i in range(1, processes + 1):
hup = MyURLParser() //A class I made
p = Process(target = hup.run)
p.start()
processes.append(p)
for p in processes:
p.join()
join()。不管你叫他们什么顺序;对已经完成的进程调用join()
,将立即返回
您可能还想查看中的其他功能;尤其是Pool
类可能会帮助您简化此代码。您可以使用join
方法(请参阅中的详细信息):
首先,保留您创建的过程
对象:
your_processes = []
...
p.start()
your_processes.append(p)
启动所有进程后,使用join
等待每个进程完成执行:
for p in your_processes:
p.join()
... #the rest of your code
基本上,join
使主进程等待进程p完成,然后再继续下一行代码。您可以这样做:
P = []
for i in range(1, processes + 1):
hup = MyURLParser() //A class I made
p = Process(target = hup.run)
p.start()
P.append(p)
for p in P:
p.join()
要仅检查进程是否处于活动状态,请使用.is\u alive()
阅读此处的更多信息:告诉您进程是否正在运行
要等待结束,请使用。此方法无效,因为进程不共享本地或全局变量。有关详细信息,请参阅此处: