多处理和列表

Multiprocessing and lists

我一直在尝试使用多处理模块优化我的代码,但我认为我已经掉进了过早优化的陷阱。

例如,运行这段代码时:

num = 1000000
l = mp.Manager().list()
for i in range(num):
    l.append(i)
l_ = Counter(l)

比这要长好几倍:

num = 1000000
l = []
for i in range(num):
    l.append(i)
l_ = Counter(l)

多处理列表比常规列表慢的原因是什么?有没有办法让它们变得高效?

Shared memroy data structures 意味着在进程之间共享。要同步访问,需要锁定它们。另一方面,list ([]) 不需要锁。

带/不带锁有区别。