2009-06-23 5 views
3

내 문제는 다음과 같습니다파이썬 멀티 매니저

내가 같은 클래스와 큐의 몇에서로드 설정을 공유하고 싶습니다 3 개 발동 있습니다. 그 정보를 공유하기 위해 다른 proc을 multiprocessing.manager로 생성하고 싶습니다.

어떻게하면됩니까? 누군가가 전역 변수 사용을 피하고 다중 처리 관리자 클래스를 사용하는 샘플 코드를 구입할 수 있습니까?

파이썬 문서는 내가 도움이 파이썬 멀티 프로세싱 문서에서 this 특정 섹션을 발견 :-(

+0

파이썬 문서는 일반적으로 도움이되지 D는 – johndodo

답변

3

너무 helpfull하지 않은 다음 프로그램 :.

from multiprocessing import Process, Queue, current_process 
import time 

def f(q): 
    name = current_process().name 
    config = q.get() 
    print "%s got config: %s" % (name, config) 
    print "%s beginning processing at %s" % (name, time.asctime()) 
    time.sleep(5) 
    print "%s completing processing at %s" % (name, time.asctime()) 

if __name__ == '__main__': 
    q = Queue() 
    processes = [] 
    cfg = { 'my' : 'config', 'data' : 'here' } 
    for i in range(3): 
     p = Process(target=f, args=(q,)) 
     processes.append(p) 
     p.start() 
     q.put(cfg) 

    for p in processes: 
     p.join() 

인 (주 스크립트를 보여줍니다 " 다중 처리 관리자 ") 3 개의 프로세스를 생성하고 각각의 구성 (여기에 사전으로 표시)을 보냅니다.

각 프로세스는 구성을 읽으며 처리 (여기서는 5 초 동안 대기) 종료한다. 이 스크립트를 실행의 출력은 다음과 같습니다

Process-1 got config: {'my': 'config', 'data': 'here'} 
Process-1 beginning processing at Tue Jun 23 23:34:23 2009 
Process-2 got config: {'my': 'config', 'data': 'here'} 
Process-2 beginning processing at Tue Jun 23 23:34:23 2009 
Process-3 got config: {'my': 'config', 'data': 'here'} 
Process-3 beginning processing at Tue Jun 23 23:34:23 2009 
Process-1 completing processing at Tue Jun 23 23:34:28 2009 
Process-2 completing processing at Tue Jun 23 23:34:28 2009 
Process-3 completing processing at Tue Jun 23 23:34:28 2009 
+0

예, 그러나 나는 또한 multiprocessing.manager 클래스를 사용하고자하는 글로벌 바르 – DrFalk3n

+0

을 통과하지 않도록 할 수있는 방법을 싶습니다 – DrFalk3n

+1

죄송합니다. 글로벌 바는 어디로 전달됩니까? –

관련 문제