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()

阅读此处的更多信息:

告诉您进程是否正在运行


要等待结束,请使用。

此方法无效,因为进程不共享本地或全局变量。有关详细信息,请参阅此处: