gpt4 book ai didi

python - python manager.dict() 锁定是如何工作的 :

转载 作者:太空宇宙 更新时间:2023-11-04 02:35:57 25 4
gpt4 key购买 nike

A managers.dict()允许跨进程共享字典并执行线程安全操作。在我的例子中,每个协调器进程都使用 m 元素创建共享字典,而 n 工作进程读取和写入单个字典键。

managers.dict() 是否为 dict 或 m 锁(其中的每个键一个)有一把锁?

当工作人员不必相互通信时,除了共享字典之外,还有其他方法可以将 m 元素共享给 n 工作人员吗?

相关python-manager-dict-is-very-slow-compared-to-regular-dict

最佳答案

经过一些尝试,我可以说每个经理指令只有一个锁。这是证明它的代码:

import time
import multiprocessing as mp


def process_f(key, shared_dict):
values = [i for i in range(64 * 1024 * 1024)]
print "Writing {}...".format(key)
a = time.time()
shared_dict[key] = values
b = time.time()
print "released {} in {}ms".format(key, (b-a)*1000)


def main():
process_manager = mp.Manager()
n = 5
keys = [i for i in range(n)]
shared_dict = process_manager.dict({i: i * i for i in keys})

pool = mp.Pool(processes=n)

for i in range(n):
pool.apply_async(process_f, (keys[i], shared_dict))
time.sleep(20)


if __name__ == '__main__':
main()

输出:

Writing 4...
Writing 3...
Writing 1...
Writing 2...
Writing 0...
released 4 in 3542.7968502ms
released 0 in 4416.22900963ms
released 1 in 6247.48706818ms
released 2 in 7926.97191238ms
released 3 in 9973.71196747ms

Process finished with exit code 0

写作时间的增加表明正在发生的等待。

关于python - python manager.dict() 锁定是如何工作的 :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47875527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com