首页 > 解决方案 > 多处理 Python 无法更新 O(1) 中的字典列表

问题描述

https://bugs.python.org/issue6766

该错误是在 2009 年发现的,但如今它似乎仍然是一个错误。

谁能告诉我如何在 O(1) 时间内更新一个值?

from multiprocessing import Manager

m = Manager()
d = m.dict()
d[1] = {}
d[1][1] = []

# but:
# 1 not in d[1]

因为 d[1] 的值是 unpicklable

所以我必须这样做:

d[1] = {}
# if i want to update d[1][1]
d[1] = {1: []} or 
d[1] = {1: [1,2,3,...]}

随着 d[1][1] 列表长度的增长,时间成本将增长为 O(n),这太慢了

提前致谢!

标签: pythonmultiprocessing

解决方案


推荐阅读