多处理和列表

时间:2015-01-05 04:48:04

标签: python list multiprocessing

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

例如,运行此代码时:

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)

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

1 个答案:

答案 0 :(得分:1)

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

有/无锁定会有所作为。