PROGRAM PYTHON

Pythonスクリプト【スレッドを使おう③~daemon】

 

 

Pythonのスレッドをデーモンにしよう

前回までのプログラムでは、ウィンドウの✕ボタンを押して中断すると、コンソールに以下のようなエラーが出力されてしまいます。

 エラーメッセージ
RuntimeError: main thread is not in main loop

 

スレッドをデーモンにする

スレッドをデーモンにするには、スレッドを作成する時にdaemonオプションをTrueにします。

オブジェクト名 = threading.Thread(target=呼び出し可能オブジェクト, daemon=True)

注意

スレッドをデーモンにすることによって、このエラーメッセージを回避できます。
ただし、デーモンスレッドは終了時にファイルやDBなどのリソースを適切に開放しないため、重要なデータを扱うようなプログラムでは、スレッドをデーモンにすることは推奨しません。

 

スレッドをデーモンにするプログラム

スレッドをデーモンにするプログラムは、以下のようになります。
前回のプログラムとの違いは、34、35行目のスレッドの作成で、daemonオプションを追加したのみです。
プログラムの動きは、前回の記事を参照してください。

上記のプログラムでは、ウィンドウの✕ボタンを押下した場合はエラーになりませんが、コンソールからCtrl-Cを押下して強制終了させた場合はエラーが出力されてしまいます。
このエラーを表示させたくない場合は、mainloop()を呼び出すところに、try~except文で例外処理(KeyboardInterrupt)を追加します。

 

 

-PROGRAM, PYTHON
-,