[英]How to share a dictionary between multiple processes in python without locking
我需要在多个进程之间共享一个巨大的字典(大小约为1 GB),但是因为所有进程都将始终从中读取。 我不需要锁定。
有没有办法在没有锁定的情况下共享字典?
python中的多处理模块提供了一个Array类,它允许通过设置进行共享而不需要锁定
锁定= FALSE
但是在多处理模块中管理器提供的词典没有这样的选项。
嗯,实际上管理员的字典根本就没有锁! 我想对于你可以通过管理器创建的其他共享对象也是如此。 我怎么知道这个? 我试过了:
from multiprocessing import Process, Manager
def f(d):
for i in range(10000):
d['blah'] += 1
if __name__ == '__main__':
manager = Manager()
d = manager.dict()
d['blah'] = 0
procs = [ Process(target=f, args=(d,)) for _ in range(10) ]
for p in procs:
p.start()
for p in procs:
p.join()
print d
如果d
上有锁,则结果为100000
。 但相反,结果是相当随机的,所以这只是一个很好的例子,为什么修改东西时需要锁;-)
所以请继续使用manager.dict()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.