2011-01-17 3 views
2

파이썬 다중 스레드 메모 작성이 가능합니까? 그렇다면 어떻게?파이썬 다중 스레드 메모 작성

+9

예 가능합니다. 지금까지 뭐 해봤 어? –

+0

예, 잠금 및 대기열이 포함될 수 있으므로 캐시를 검색하면 도움이됩니다. – TryPyPy

답변

2

물론 가능합니다. 사실, 같은 함수가 동일한 매개 변수를 사용하여 병렬로 호출되는 경우 일부 중복 계산이 수행 될 수 있다고 가정하면 직접적인 단일 스레드 구현이 올바르게 작동해야한다고 생각합니다. 시나리오의 그림에 대한

, 당신의 메모이 제이션 절차는 아마도 다음과 같이 보일 것입니다 :

if args not in cache: 
    cache[args] = func(args) 
return cache[args] 

두 개의 스레드가 같은 args과 동시에이 지점에 충돌, 그들은 모두 병렬로 func(args)를 호출 할 수 있습니다 , 하나의 계산 인스턴스 만 호출하고 다른 인스턴스는 첫 번째 인스턴스가 완료 될 때까지 대기하는 것이 더 효율적입니다. 이것은 당신에게별로 문제가되지 않을 수도 있습니다. 그렇다면 잠금 (threading 모듈에서)을 사용하여 일치하는 인수로 스레드를 차단하는 솔루션은 매우 간단해야합니다.

+1

@gnibbler : 아무 것도 시도하지 않았습니다. 필자는 메모 작성을 사용하여 큰 인공 지능 (AI) 계산 속도를 높이는 친구와 토론을 시작했지만 자신의 컴퓨터에서 계산할 시간이 오래 걸리는 것으로 나타났습니다. 다중 코어 컴퓨터이므로 필자는 자신의 응용 프로그램을 멀티 스레딩하는 방법을 제안했으며 자신의 메모를 엉망으로 만들지 않고도 작업을 수행 할 수 있을지 확신하지 못했습니다. 호기심에서 전문가가 실제로 가능한지 물어보기로했습니다. 그것은 ...이 공동체의 사람들은 결코 그들의 해결책으로 저를 놀라게하는 것을 멈추지 않는다고 생각합니다. :) – user578086