설명 할 수없는 동작이 있습니다. 이 코드입니다 : I 출력이Python 다중 처리 잠금 이상 동작
melon
orange
apple
melon
될 것으로 기대
import multiprocessing
from collections import deque
LOCK = multiprocessing.Lock()
data = deque(['apple', 'orange', 'melon'])
def f(*args):
with LOCK:
data.rotate()
print data[0]
pool = multiprocessing.Pool()
pool.map(f, range(4))
대신 나는 어떤 아이디어가 크게 감상 할 수
melon
melon
melon
얻을.
'잠금'과 아무 관련이 없습니다. Linux-y 시스템의 각 작업자 프로세스는'Pool'이 생성 될 때 주 프로세스의 주소 공간 ('fork()'에서 읽힌)의 _copy_를 상속받습니다. 따라서 그들은 각각 자신의 '데이터'복사본을 얻습니다. 그리고 어떤 프로세스도 복사를 통해 다른 프로세스의 복사본에 영향을 줄 수 없습니다. –
알겠습니다 ... 고마워요! – giorgosp