2015-01-05 7 views
0

다중 처리 모듈을 사용하여 코드를 최적화하려고했지만 조기 최적화의 함정에 빠졌다고 생각합니다. 이 코드를 실행하는 경우 예를 들어다중 처리 및 목록

는 :

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

멀티 프로세싱 목록 일반 목록보다 느린 이유는 무엇입니까 :

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

을 그것은이 이상 여러 번한다? 그리고 그들을 효율적으로 만드는 방법이 있습니까?

답변

1

Shared memroy data structures은 프로세스간에 공유되어야합니다. 액세스를 동기화하려면 잠글 필요가 있습니다. 반면에 list ([])은 잠금 장치가 필요하지 않습니다.

잠금 여부 없음는 차이를 만듭니다.