欢迎访问宙启技术站
智能推送

Python中如何通过terminate()方法关闭多个子进程

发布时间:2024-01-08 00:38:12

在Python中,可以通过terminate()方法关闭多个子进程。terminate()方法是multiprocessing.Process类的一个方法,用于强制终止子进程的运行。

下面是一个简单的示例,展示了如何使用terminate()方法关闭多个子进程:

import multiprocessing
import time

def func(seconds):
    print(f'Starting process for {seconds} seconds')
    time.sleep(seconds)
    print(f'Process for {seconds} seconds completed')

if __name__ == '__main__':
    processes = []
    
    # 创建10个子进程
    for i in range(10):
        p = multiprocessing.Process(target=func, args=(i+1,))
        p.start()
        processes.append(p)
    
    # 在5秒后关闭所有子进程
    time.sleep(5)
    for p in processes:
        p.terminate()
        p.join()
    
    print('All processes terminated')

在上面的示例中,我们首先定义了一个func()函数,它将在子进程中运行。func()函数接受一个参数seconds,表示进程需要运行的时间。

if __name__ == '__main__':语句块中,我们首先创建了一个空列表processes用于存储我们创建的子进程。

然后,我们使用一个循环创建了10个子进程,并将它们的进程对象存储在processes列表中。在创建每个子进程后,我们使用start()方法启动它们。

接下来,我们使用time.sleep()方法延迟5秒钟,然后使用for循环遍历processes列表,使用terminate()方法终止每个子进程,并使用join()方法等待子进程退出。

最后,我们打印出"All processes terminated"消息。

运行这段代码,你将会看到每个子进程开始执行,并在指定的时间后终止。在5秒后,所有的子进程都被终止,然后程序输出"All processes terminated"。

这就是使用terminate()方法关闭多个子进程的基本方法。请注意,在使用terminate()方法终止子进程后,子进程可能无法执行清理任务,因此需要谨慎使用。