対私はthreading
モジュールでCondition
とEvent
クラス間の違いの明確な説明を見つけるためには至っていません。誰かが他の人よりも役に立ちそうな明確なユースケースはありますか?私が見つけることができるすべての例は、例としてプロデューサ - コンシューマモデルを使用しています。ここでは、queue.Queue
がより簡単な解決策になります。threading.Condition threading.Event
29
A
答えて
35
単純に言えば、スレッドが何かが真になるのを待つことに興味があるときには、という条件を使用し、それが本当にある共有リソースに排他的にアクセスできるようにします。
スレッドは、何かが真になるのを待つことに興味があるときにイベントを使用します。
本質的に、Conditionは抽象化されたEvent + Lockですが、同じ基礎となるロックに対して複数の異なる条件を持つことができると考えると面白いです。したがって、基になるリソースの状態を記述する異なる条件を持つことができます。つまり、共有リソースの特定の状態にのみ関心を持つ作業者を覚醒させることができます。
関連する問題
- 1. Python threading.Condition()複数のプロセスにわたる機能
- 2. Python - ガベージコレクション中に `threading.Event`が" set "されていますか?
- 3. Python global threading.condition()と複数のモジュールで使用
- 4. threading.event関数を使用してスレッドを削除するにはどうすればよいですか?
- 5. アサート変数がthreading._Eventプロテクトクラスインスタンス
- 6. Pythonスレッディング:2つのスレッドで眠れますか?
- 7. Python Threading With Eventオブジェクト
- 8. Pythonの一時停止スレッドは手動で行い、リセットする
- 9. Spyder3 Ipythonコンソールスレッドの問題
- 10. Pythonはスリープ中にスレッドを終了します
- 11. 私は大規模なPythonプロジェクトは次のようになり、生産上の問題をデバッグできるようにする機器にしたいthreading.Lockののfutex ID
- 12. 2つの機能を別々のクラスに同期させる
- 13. pythonロックの誤解
- 14. pythonでudpソケットをシャットダウンする方法
- 15. pythonスレッド間のイベントの使用
- 16. Pythonで複数のスレッドを同期する
- 17. スレッド内で実行中のオブジェクトの関数を呼び出せません
- 18. Python:スレッドの中でプログラムの流れを止めてしまうのを避けるには?
- 19. 同じ機能を持つ2つのメソッドがPythonのスレッドモジュールで利用できるのはなぜですか?
- 20. 次のシンプルスレッドをjitclassにする方法
- 21. スレッドのリストが完了するのを待つ方法は?シングルスレッドの場合(パイソン)
- 22. メッセージボックスをn秒ごとに表示した後に関数を繰り返します。
- 23. Python - どうすれば '停止可能な'スレッドを実装できますか?
- 24. Pythonスレッディング - シンプルでトリッキーな
- 25. `gevent.spawn`がmonkeypatched` threading.Thread() `と異なるのはなぜですか?
- 26. Pythonのスレッド間で例外を渡す方法
- 27. Pythonでのスレッドの基本的な例を修正する方法
- 28. Python 3.5でのイベントを使用したループスレッドの終了
- 29. Python - Tkinterウィンドウがself.destroyで閉じないのはなぜですか?
- 30. 待機中にPythonスレッドがまだ実行されているのはなぜですか?
したがって、条件は抽象化されたイベント+ロックですか? –
本質的にはい...しかし、あなたは、同じ基本的なロックを介していくつかの異なる条件を持つことができると考えると、より面白くなります。したがって、基になるリソースの状態を記述する異なる条件を持つことができます。つまり、共有リソースの特定の状態にのみ関心を持つ作業者を覚醒させることができます。 – donkopotamus
'threading.Condition()。wait()'はブロック待機ですか? – overexchange