2

Pythonを使用してWebスクレイパーアプリケーションを構築しました。これは、次の3つの主要部分で構成されています。

  1. GUI(tkinter上に構築)
  2. クライアント(フロントエンドとバックエンド間のインターフェイスを制御します)
  3. バックエンドコード(さまざまなスレッドプロセス)。

私が抱えている問題は、ユーザーがインターフェイスを介して終了する代わりにXを押してプログラムを終了すると、root.destroy()が呼び出されず、ウィンドウが消えてもアプリケーションが永久に実行されるように見えることです。これは、膨大な量のシステムリソースを消費することになります。

すべてのスレッドをデーモンに設定しようとしましたが、あまり成功しませんでした。プログラムが終了後にCPUを使い果たし続ける他の理由はありますか?

4

1 に答える 1

2

すべてのスレッドをに設定する必要はありませんdaemon。クライアントスレッドとバックエンドスレッドをデーモンに設定します。そうすれば、GUIスレッドが終了すると、スレッドも終了するようにdaemon設定さTrueれます。

ドキュメントから:

スレッドは「デーモンスレッド」としてフラグを立てることができます。このフラグの重要性は、デーモンスレッドのみが残っているときにPythonプログラム全体が終了することです。

于 2013-01-10T18:59:25.127 に答える