本文共 1058 字,大约阅读时间需要 3 分钟。
在 Python 中,优雅地退出多进程程序是一个常见的需求。通过设置全局变量,我们可以在需要时轻松地控制多进程程序的运行状态。这种方法不仅简洁,而且在处理任务队列或模型训练时非常实用。
以下是一个简单的示例:
import osfrom multiprocessing import Process, Manager# 全局变量控制多进程运行状态running = Truedef worker(queue): global running while running: task = queue.get() if task is None: break print('Worker received', task)if __name__ == '__main__': manager = Manager() queue = manager.Queue() # 创建多个进程 processes = [Process(target=worker, args=(queue,)) for _ in range(5)] for p in processes: p.start() # 模拟任务队列 for i in range(10): queue.put(i) time.sleep(5) # 停止所有进程 running = False # 等待所有进程结束 for p in processes: p.join() running:用于标记多进程程序的运行状态。当变量值从 True 改为 False 时,所有进程会停止继续执行任务。Process 类创建子进程,每个进程执行 worker 函数。None 时,进程退出循环。running = False,然后等待所有子进程结束。running = False 可以优雅地停止所有进程,避免僵死。running 作为训练控制标志,在训练完成或需要保存模型时停止所有进程。这种方法简单易懂,同时兼顾了效率和资源管理,适合开发和维护多进程程序时的各种需求。
转载地址:http://enofk.baihongyu.com/