鍍金池/ 問答/Java  Python  Linux  網(wǎng)絡(luò)安全/ 請問:Python多線程的daemon為什么運(yùn)行一次就終止?

請問:Python多線程的daemon為什么運(yùn)行一次就終止?

我本來是想做一個cron job,也就是讓Python可以周期性地循環(huán)一個叫subtask的任務(wù)。

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) # 不能設(shè)置daemon=true,會只運(yùn)行一次就終止!
    # timerThread.daemon = True # 不能設(shè)置daemon=true,會只運(yùn)行一次就終止!
    timerThread.start()

運(yùn)行PeriodlTest()時,如果不加daemon=true那一句,那么程序會無休止地運(yùn)行下去,即使ctrl+C也無法結(jié)束??梢砸坏┘觗aemon=true那一句,那么PeriodlTest()會只運(yùn)行一次subtask就終止。

請問這個daemon應(yīng)該怎么解決呢?怎么才能讓我可以用ctrl+C或者其他的外部干擾結(jié)束它呢?謝謝了先!

回答
編輯回答
枕頭人

守護(hù)線程不能是唯一一個正在運(yùn)行的線程,必須依附于其他非守護(hù)線程才能持續(xù)運(yùn)行。

2018年8月27日 13:03