multiprocessing 模块的 Manager

multiprocessing 模块的 Manager 类提供了一个机制,允许多个进程共享数据结构。 Manager 对象可以创建多种可被多个进程共享的数据结构,如列表、字典、集合等。以下是 Manager 的一些常用属性和方法:

属性:

address : 包含绑定到的地址和端口的元组,如果使用默认服务器,则为 ('localhost', 随机端口号) 。

方法:

list() : 创建一个可以被多个进程共享的列表。

dict() : 创建一个可以被多个进程共享的字典。

Queue() : 创建一个可以被多个进程共享的队列。

Value : 创建一个可以被多个进程共享的值。这个值可以是 multiprocessing 模块中的基本数据类型,如 multiprocessing.Value 。

Array : 创建一个可以被多个进程共享的数组。这个数组可以是 multiprocessing 模块中的 multiprocessing.Array 。

Namespace() : 创建一个可以被多个进程共享的命名空间。

Barrier(parties, action) : 创建一个同步屏障,所有进程必须到达屏障点才能继续执行。

Condition(lock) : 创建一个可以被多个进程共享的条件变量。

Event() : 创建一个可以被多个进程共享的事件。

Lock() : 创建一个可以被多个进程共享的锁。

RLock() : 创建一个可以被多个进程共享的可重入锁。

Semaphore(value) : 创建一个可以被多个进程共享的信号量。

BoundedSemaphore(value) : 创建一个可以被多个进程共享的有界信号量。

start() : 启动管理器进程,如果管理器进程已经启动,则此方法无效。

shutdown() : 关闭管理器进程,释放资源。

例子:

python

复制

from multiprocessing import Manager

创建一个Manager对象

manager = Manager()

使用Manager创建共享数据结构

shared_list = manager.list()

shared_dict = manager.dict()

shared_queue = manager.Queue()

其他操作...

请注意, Manager 对象创建的共享数据结构在默认情况下是使用 multiprocessing 模块的服务器进程来管理的。这意味着,如果所有的进程都结束了,管理器进程也会退出,导致共享数据结构无法访问。使用 Manager 时,应该在所有进程都完成之后调用 shutdown() 方法来正确关闭管理器进程。

由于Python的版本更新, multiprocessing 模块的API也可能发生变化,所以建议查看最新的官方文档以获取最准确的信息。

相关推荐
一条大祥脚1 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
10年前端老司机2 小时前
Milvus 8种检索能力实践
数据库·python·agent
Sakura_j_h_2 小时前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc
大草原的小灰灰2 小时前
LLM应用的标准开发框架LangChain(八)- 中间件
python·中间件·langchain
卷无止境3 小时前
百万 token 时代的真相:主流大模型上下文窗口与最大输出的横向对比分析
人工智能·python
用户298698530143 小时前
Python 实战:将 HTML 批量转换为 Markdown
python·html·markdown
hhcgchpspk3 小时前
flask服务端页面预防被爬措施
后端·python·flask·网络爬虫·防爬
小小张说故事3 小时前
Python 里 copy.copy() 和 deepcopy() 到底差在哪:拆开 __copy__、__deepcopy__ 和那个防止无限递归的 memo 字典
python
vipxieliang3 小时前
Python collections:高效容器与实战案例
后端·python
青少儿编程课堂4 小时前
蓝桥杯青少组图形化 STEMA 省考(报名倒计时·11/22开考)+ 全国青少年信息素养大赛 2026—2027赛季 + 电子学会图形化考级:校园华容道大闯关
c++·python·算法·bfs·信息学竞赛