2017-12-18 275 views
1

正如標題所述,我創建了一個單獨的線程來執行Flask中的長任務。瓶服務器退出時線程仍然運行

import schedule 
import time 

start_time = time.time() 


def job(): 
    print("I'm working..." + str(time.time() - start_time)) 


def run_schedule(): 
    while True: 
     schedule.run_pending() 
     time.sleep(1) 

當我按下Ctrl + c終止服務器,線程仍然prints服務器退出時如何停止線程?

+0

有一個你試過__ctrl + z__ – babygame0ver

+0

然後在try中添加你的代碼除了處理鍵盤中斷和在那個事件中暫停/停止你的線程 – Gahan

+0

** ctrl + z **可以工作,但是有沒有其他的方式來檢查main_thread活着。 – CoXier

回答

1

您可能希望將您的線程設置爲daemon

一個線程會一直運行,直到它自行結束或者它被明確地終止。

守護線程以相同條件運行,並且至少有另一個非守護線程正在運行:這意味着如果您結束了主線程並且沒有其他線程正在運行,則所有守護線程也將結束。

如果你使用線程模塊,您可以設置線程的後臺。通過改變自己的布爾:

import threading 
your_thread.daemon = True 

如果你使用線程模塊,它應該是kwargs

+0

感謝您的回答。 – CoXier

相關問題