博客
关于我
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 中with的使用及样例
    查看>>
    python读取wav文件并播放[pyaudio/wave]
    查看>>
    python读取txt文件的行数
    查看>>
    Python 中内置的最大堆 API
    查看>>
    Python 中只有一个 True 和一个 False 对象吗?
    查看>>
    python读取mtcars数据集并实现以下操作_关于数据处理。。,Python交流,技术交流区,鱼C论坛 - Powered by Discuz!...
    查看>>
    Python 中多线程与多处理之间的区别
    查看>>
    Python 中如何使用 lambda 函数
    查看>>
    Python 中如何创建多行字符串?
    查看>>
    Python 中如何处理异常?
    查看>>
    Python 中如何实现列表的切片?
    查看>>
    Python 中如何实现字典的排序?
    查看>>
    Python 中常用的数据类型及相关操作详解
    查看>>
    python 中文乱码
    查看>>
    Python 中生成器与普通函数的区别
    查看>>
    Python 中的 *tuple 和 **dict 是什么意思?
    查看>>
    Python 中的 filter() 函数:筛选可迭代对象元素
    查看>>
    Python 中的 Pillow 不允许我打开图像(“超出限制“)
    查看>>
    Python 中的 threading 模块和 multiprocessing 模块有何区别?
    查看>>
    Python 中的 threading 模块和 multiprocessing 模块有何区别?
    查看>>