2011-10-19 4 views
0

EDIT : 문제는 내 프로그램의 구조와 관련이 없습니다. FAPWS3의 라우팅은 비슷하고 밀접하게 명명 된 기능을 선택했습니다.파이썬 전역 threading.condition() 및 여러 모듈에서 사용

저는 여러 파일에 걸쳐있는 큰 프로그램이 있습니다. 이 파일에 threading.condition() 잠금 기능을 사용해야합니다. 다음은 내가하려는 일의 예입니다. 프로덕션에서는 어떤 오류도 발생하지 않지만 잠금 상태는 공유되지 않습니다 (한 스레드에서 획득 할 수 있고 이전 스레드가 발표되지 않고 다른 스레드에서 획득 할 수 있음).

main.py

import servera, serverb 

# some code that deploys server-a and server-b as threads 

constants.py

import threading 
mylock = threading.Condition() 

servera.py

from constants import mylock 

Class ServerA(): 
    def doSomething(): 
    mylock.acquire() 
    # do something 
    mylock.release() 

serverb.py

from constants import mylock 

Class ServerB(): 
    def doSomethingElse(): 
    mylock.acquire() 
    # do something else 
    mylock.release() 
+0

귀하의 의견은 귀하가 문제가 발생한 이유를 실제로 설명하지 않습니다. 실제로 문제를 입증하는 작업 코드의 최소한의 예를 게시하십시오. – SingleNegationElimination

답변

0

내가 기억한다면 모듈을 가져올 때 파이썬이 그것을 실행합니다. 그래서 나는 당신이 각 파일마다 다른 마일로를 얻는다고 생각합니다. 인쇄하여 ID를 볼 수 있습니다. 각 모듈의 단 하나의 인스턴스가

때문에, 모듈 오브젝트에 대한 변경 사항이 사방에 반영 얻을 :

제프스 링크 아래에 게시은 삭제합니다.

그래서 이것은 문제가되지 않습니다.

+0

그것이 내가 생각한 것입니다. 그렇다면 글로벌 밀실을 어떻게 참고할 수 있습니까? –

+1

사실, http://effbot.org/pyfaq/how-do-i-share-global-variables-across-modules.htm에 따르면 나는 변수를 올바르게 공유하고 있다고 생각합니다. –