请问:Python多线程的daemon为什么运行一次就终止?

我本来是想做一个cron job,也就是让Python可以周期性地循环一个叫subtask的任务。

def subtask():
    next_call = time.time()
    while True:
        print (time.ctime(), datetime.datetime.now())
        next_call = next_call + 1;
        time.sleep(next_call - time.time())
def PeriodlTest():
    timerThread = threading.Thread(target=subtask)
    # timerThread.setDaemon(True) # 不能设置daemon=true,会只运行一次就终止!
    # timerThread.daemon = True # 不能设置daemon=true,会只运行一次就终止!
    timerThread.start()

运行PeriodlTest()时,如果不加daemon=true那一句,那么程序会无休止地运行下去,即使ctrl+C也无法结束。可以一旦加daemon=true那一句,那么PeriodlTest()会只运行一次subtask就终止。

请问这个daemon应该怎么解决呢?怎么才能让我可以用ctrl+C或者其他的外部干扰结束它呢?谢谢了先!

阅读 3.2k
1 个回答

守护线程不能是唯一一个正在运行的线程,必须依附于其他非守护线程才能持续运行。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题