0
私は同じクラスの2つのインスタンスを持ち、グローバルに宣言されたLock変数を持っています。Python Thread Loopメソッドはコードを続行しません
このクラスは、同じクラスの別のメソッドを実行するスレッドを作成します.RUN()メソッドを持って次のように私はいくつかのテストprint文を持っている
(これらの2つの方法は、質問の最後にあります)
[main.py]
first = className()
second = className()
print('test before first')
first.run()
print('test before second')
second.run()
と私の出力である:次のように自分のコードで
[出力]
test before first
first Thread lock acquired by first
first Thread lock released (will sleep now)
first Thread lock acquired by first
first Thread lock released (will sleep now)
と、それはそれはミューテックス 'threading.Lockを()' を使用して、リソースのために競合する別のスレッドを起動する必要があり、このラインになることはありません:
[main.py]
print('test before second')
実行
クラスメソッド:
[className.py]
def run(self):
tr = threading.Thread(target= self.update())
tr.start()
return True
def update(self):
while(True):
try:
global lock
lock.acquire()
print('first Thread lock acquired by ' + self.name)
#do stuff
lock.release()
print('lock release')
sleep(2)
except:
sleep(5)
あなた自身の質問に答えていますか? – MooingRawr
はい、私は質問を終えている間にそれを理解しました。だから私はオプションを選択した "あなた自身の質問に答えて - あなたの知識、Q&Aスタイルを共有する" –