0

ボトル アプリを起動すると、オブジェクトが永久に実行されるタイマーを作成します。

from threading import Timer

class Watcher(object):
    def __init__(self, timer=Timer):
        self.timer = timer
        self.watcher_interval = 2 * 60 * 60
        self.check_condition()

    def check_condition(self):
        do_stuff()
        self.timer(self.watcher_interval, self.check_condition).start()

これはうまくいきます。

ただし、タイマーがまだバックグラウンドで実行されているため、Ctrl+でアプリケーションを終了できません。C

キーボード割り込みを送信するときに、タイマーを終了するように指示するにはどうすればよいですか? 今のところ、PID を介してそれを強制終了するか、怠惰な場合はkillall python.

4

1 に答える 1

0

タイマーは Thread から継承されるため、タイマーを作成するときは、インスタンス変数を(起動する前に) に設定してデーモン スレッドであることを指定します。そうすることで、デーモン以外のスレッドが実行されていないと Python が判断したときに終了します。daemonTrue

于 2013-03-26T07:08:50.010 に答える