2015-01-05 71 views
0

我一直在嘗試使用多處理模塊來優化我的代碼,但我認爲我已經陷入了過早優化的陷阱。多處理和列表

例如,運行此代碼時:

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

Shared memroy data structures意味着在進程之間共享。要同步訪問,他們需要被鎖定。另一方面,list[])不需要鎖定。

有/無鎖定有所作爲。