デーモンスレッドを停止する方法は?

LetsPlayYahtzee

私は単純な生産者/消費者アプリケーションを持っています。

プロデューサーはキューにデータを書き込むスレッドであり、コンシューマーはキューからメッセージを読み取るスレッドであり、ある時点で終了します。

私のプロデューサーは少しこのように見えます

def producer(queue):
    while not queue.full():
        queue.put(randint(1, 199))

と消費者

def consumer(queue):
    for i in range(100):
        print(queue.get())
        queue.task_done()

私のメインでは、そのようなスレッドを呼び出します

p = Thread(target=producer)
c = Thread(target=consumer)

p.daemon = True
p.start()
c.start()
c.join()

ときcにのみ、残りの非デーモンスレッドがメインで終了し、それらのスレッドを終了する適切な方法は何ですか?

更新

コンシューマーが終了し、問題はプロデューサーにあるため、プロデューサーが使用している正確なコードは次のとおりです。

def generate_random_alphanumerics(msg_queue):
    while True:
        if not msg_queue.full():
            msg_queue.put(hashlib.sha1(bytes(randint(1, 10000))).hexdigest() * 10)
        else:
            sleep(0.01)

スレッドがスリープしているという問題はありますか?

enrico.bacis

問題は、プロデューサーループが決して終了しないことです。したがって、停止するように指示する方法が必要です。

stop_event= threading.Event()
p = Thread(target=producer, args=(msg_queue, stop_event))
p.start()

そして、プロデューサーは次のようになります。

def generate_random_alphanumerics(msg_queue, stop_event):
    while not stop_event.is_set():
        if not msg_queue.full():
            [...]

次に、プロデューサーを停止したい場合は、次のようにします。

stop_event.set()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

シャットダウン時に無限ループでPythonデーモンスレッドを停止する方法は?

分類Dev

androidボタンを押したときにオーディオスレッドを停止する方法は?

分類Dev

ハンドラスレッドを停止する方法は?

分類Dev

モンゴコンプレックスサブフィールドからデータを抽出する方法は?

分類Dev

デーモンスレッドでsqlite接続を閉じる方法は?

分類Dev

Javaスレッドの監視。デーモン以外のライブスレッドを見つける方法は?

分類Dev

モーダルウィンドウでYouTubeビデオを停止する方法は?

分類Dev

Chan に処理するデータがなくなったら、スレッドを停止する方法は?

分類Dev

Androidでコード実行をスケジュールする方法またはAndroidのデーモンスレッドとは正確には何ですか?

分類Dev

Java EEアプリケーションをアンデプロイするときにスレッドを停止する方法は?

分類Dev

Websphereはデーモンスレッドを尊重しますか?

分類Dev

別のクラスのボタンでスレッドを停止またはスリープする方法

分類Dev

スレッドを停止する方法-Java

分類Dev

GPSDデーモンを停止する方法は?

分類Dev

消費者スレッドが例外に直面している場合はプロデューサーのスレッドを停止する方法

分類Dev

JVMはデーモンスレッドをどのように終了しますか?または正常に終了するデーモンスレッドを書く方法

分類Dev

Python停止可能スレッドはデーモン化する必要がありますか、それとも.join()にする必要がありますか?

分類Dev

エンドレスEJB 3タイマーを停止する方法は?

分類Dev

Javaスレッドを正常に停止する方法は?

分類Dev

Javaでスレッドを適切に停止する方法は?

分類Dev

スレッドを一時停止する方法は?

分類Dev

C#でスレッドを停止する方法は?

分類Dev

とりわけ特定のスレッドを停止する方法は?

分類Dev

Androidでスレッドを停止する方法は?

分類Dev

ProducerConsumerの状況でJavaスレッドを停止する方法は?

分類Dev

UMLシーケンス図で並列スレッドをモデル化する方法

分類Dev

メインUIスレッドを一時停止する方法(Android)

分類Dev

インメモリレコードのデータベース変更を確認する方法は?

分類Dev

デバッグモードで、どこにいてもブレーク(実行を一時停止)する方法はありますか?

Related 関連記事

  1. 1

    シャットダウン時に無限ループでPythonデーモンスレッドを停止する方法は?

  2. 2

    androidボタンを押したときにオーディオスレッドを停止する方法は?

  3. 3

    ハンドラスレッドを停止する方法は?

  4. 4

    モンゴコンプレックスサブフィールドからデータを抽出する方法は?

  5. 5

    デーモンスレッドでsqlite接続を閉じる方法は?

  6. 6

    Javaスレッドの監視。デーモン以外のライブスレッドを見つける方法は?

  7. 7

    モーダルウィンドウでYouTubeビデオを停止する方法は?

  8. 8

    Chan に処理するデータがなくなったら、スレッドを停止する方法は?

  9. 9

    Androidでコード実行をスケジュールする方法またはAndroidのデーモンスレッドとは正確には何ですか?

  10. 10

    Java EEアプリケーションをアンデプロイするときにスレッドを停止する方法は?

  11. 11

    Websphereはデーモンスレッドを尊重しますか?

  12. 12

    別のクラスのボタンでスレッドを停止またはスリープする方法

  13. 13

    スレッドを停止する方法-Java

  14. 14

    GPSDデーモンを停止する方法は?

  15. 15

    消費者スレッドが例外に直面している場合はプロデューサーのスレッドを停止する方法

  16. 16

    JVMはデーモンスレッドをどのように終了しますか?または正常に終了するデーモンスレッドを書く方法

  17. 17

    Python停止可能スレッドはデーモン化する必要がありますか、それとも.join()にする必要がありますか?

  18. 18

    エンドレスEJB 3タイマーを停止する方法は?

  19. 19

    Javaスレッドを正常に停止する方法は?

  20. 20

    Javaでスレッドを適切に停止する方法は?

  21. 21

    スレッドを一時停止する方法は?

  22. 22

    C#でスレッドを停止する方法は?

  23. 23

    とりわけ特定のスレッドを停止する方法は?

  24. 24

    Androidでスレッドを停止する方法は?

  25. 25

    ProducerConsumerの状況でJavaスレッドを停止する方法は?

  26. 26

    UMLシーケンス図で並列スレッドをモデル化する方法

  27. 27

    メインUIスレッドを一時停止する方法(Android)

  28. 28

    インメモリレコードのデータベース変更を確認する方法は?

  29. 29

    デバッグモードで、どこにいてもブレーク(実行を一時停止)する方法はありますか?

ホットタグ

アーカイブ