2011-10-19 6 views
0

EDIT:問題は私のプログラムの構造に関連していませんでした。それは、FAPWS3のルーティングが、同様の、密接に名付けられた機能を選ぶことでした。Python global threading.condition()と複数のモジュールで使用

私は大きなプログラムを複数のファイルにまたがっています。これらのファイル間でthreading.condition()ロック機能を使用する必要があります。ここに私がしようとしているものの例があります。プロダクションではエラーは発生しませんが、ロックの状態は共有されていないようです(私は1つのスレッドで獲得でき、前のリリースなしで別のスレッドで獲得できます)。

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

私が正しいことを覚えていれば、モジュールをインポートするとPythonがそれを実行します。だから、私はあなたがそれぞれのファイルで異なるマイロックを取得すると思います。 あなたはそれを印刷し、IDを見ることができます。各モジュールのインスタンスが1つしかないので、モジュールオブジェクトに加えられた変更はどこでも反映されます

:以下掲示

Jeffsリンクがあることクリアされます。

これは問題ではありません。

+0

それは私が考えたものです。グローバルミルクをどのように参照すればいいですか? –

+1

実際、http://effbot.org/pyfaq/how-do-i-share-global-variables-across-modules.htmによれば、変数を正しく共有していると思います。 –

関連する問題