博客
关于我
Python 多处理如何优雅地退出?
阅读量:795 次
发布时间:2023-03-07

本文共 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/

    你可能感兴趣的文章
    Python WebDriver如何打印整个页面源(html)
    查看>>
    Python WebSocket自动化测试:构建高效接口测试框架
    查看>>
    Python Web开发
    查看>>
    Redis 配置文件杂项。
    查看>>
    Python web自动化测试 —— 文件上传
    查看>>
    Python web自动化测试 —— 文件上传!
    查看>>
    Python Web自动化测试开发环境搭建(附安装包与虚拟机环境)
    查看>>
    python win32api键盘_Python win32api.keybd_event模拟键盘输入
    查看>>
    python Windows显示当前鼠标坐标
    查看>>
    python Workbook 表格宽度
    查看>>
    python write报错a byte-like object is required.not str
    查看>>
    PYTHON调用大模型实现图片生成
    查看>>
    python yaml.dump 缩进错误
    查看>>
    Python yield generator
    查看>>
    Python yield 使用浅析
    查看>>
    Python yield解析:深入理解生成器的魔力
    查看>>
    Python You are using pip version 10.0.1, however version 19.3.1 is available.
    查看>>
    python zipfile模块学习笔记(一)
    查看>>
    Python zip函数 详解(全)
    查看>>
    Python \r\n与\n的转换
    查看>>