2
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 スレッド ライブラリで再作成すると、意図したとおりに動作します。ここで何が間違っていますか?

4

1 に答える 1