博客
关于我
Python multiprocessing.Queue 与 multiprocessing.manager().Queue()
阅读量:798 次
发布时间:2023-03-06

本文共 1228 字,大约阅读时间需要 4 分钟。

Python中的multiprocessing模块提供了两种不同的Queue类,分别是通过Manager获取的Queue以及直接从模块导入的Queue。两者在数据共享和进程间通信方式上存在显著差异,适用于不同场景。

1. multiprocessing.Manager().Queue()

Manager().Queue()是一个分布式队列,主要用于多进程之间的数据共享和通信。在需要多个进程共享数据时非常有用。以下是一个使用Manager获取Queue的示例:

from multiprocessing import Process, Managerimport timedef add_to_queue(q):    for i in range(5):        print('Adding %s to queue' % i)        q.put(i)        time.sleep(0.1)manager = Manager()task_queue = manager.Queue()p = Process(target=add_to_queue, args=(task_queue,))p.start()p.join()while not task_queue.empty():    print('Got %s from queue' % task_queue.get())

2. multiprocessing.Queue

Directly imported Queue是一个本地队列,主要用于简单的多进程通信。在只需多进程之间进行简单通信时非常方便。以下是一个使用直接Queue的示例:

from multiprocessing import Process, Queueimport timedef add_to_queue(q):    for i in range(5):        print('Adding %s to queue' % i)        q.put(i)        time.sleep(0.1)task_queue = Queue()p = Process(target=add_to_queue, args=(task_queue,))p.start()p.join()while not task_queue.empty():    print('Got %s from queue' % task_queue.get())

测试用例

  • 对于Manager().Queue(),可以尝试在多个不同进程间添加和获取数据。
  • 对于Queue(),可以尝试在同一个进程内添加和获取数据。

应用场景

在大数据处理和机器学习任务中,通常需要多个进程来并行计算和处理数据。此时,Manager().Queue()提供了方便的数据共享和通信机制。而对于简单的多进程通信,直接使用Queue同样高效。

转载地址:http://ioafk.baihongyu.com/

你可能感兴趣的文章
PyQt MimeData 文件名
查看>>
PyQt QML Material Design 按钮背景不会改变
查看>>
PyQt QString转成python stirng
查看>>
PyQt QToolButton在焦点时不更新图标
查看>>
PyQt 正确使用 emit() 和 pyqtSignal()
查看>>
PyQT-将文件复制到剪贴板
查看>>
PYQT.如何在QTableView中插入小部件
查看>>
PyQt4 代码在 PyQt5 (QHeaderView) 上不起作用
查看>>
PyQt4 到 PyQt5 ->mainFrame() 已弃用,需要修复才能加载网页
查看>>
PyQt4, class:mouseButtons用法
查看>>
PyQt4参考文档
查看>>
PyTorch Lightning:通过分布式训练扩展深度学习工作流
查看>>
PyQt5 - QThread:在线程仍在运行时被销毁
查看>>
PyQt5 - 如何从工作线程发出信号以通过 GUI 线程调用事件
查看>>
PyQt5 Designer 不工作:此应用程序无法启动,因为无法初始化 Qt 平台插件
查看>>
PyQt5 QLCNumber 没有更新
查看>>
PyQt5 TabWidget选项卡BarClicked TypeError:本机Qt信号不可调用
查看>>
PyQt5 从 PyQt4 转换信号代码
查看>>
PyQt5 和 asyncio:从永不完成的收益
查看>>
PyQt5 和 Django:如何使用 HTTP 请求(Multipart-form)上传图像?
查看>>