lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
class Thread(QRunnable):
def __init__(self):
super(Thread, self).__init__()
self.mutex = QMutex()
def run(self):
self.mutex.lock()
lst.pop(0)
print(str(lst))
time.sleep(5)
self.mutex.unlock()
上記のコードは、私が達成しようとしているものの例です。クラスの外部で定義されたリストがあります。リストの最初の要素を定期的にポップしたい。5 つのスレッドを実行している場合、一度にリストを変更するスレッドは 1 つだけです。これを試すたびに、5 つのスレッドはすべて最初の要素をポップしようとし、必要に応じて待機しません。これをネイティブの Python スレッド ライブラリで再作成すると、意図したとおりに動作します。ここで何が間違っていますか?