2009-10-21 65 views
0

在python腳本中,我啓動了一堆線程,每個線程都使用time.sleep(interval)以一定間隔抽取一些資源。我有另一個線程正在運行,它使用cmd模塊來監視用戶輸入。當用戶輸入「Q」,我打電話線程正在休眠時退出進程

sys.exit(0) 

然而,當腳本運行和我輸入「Q」,線程用戶輸入監視線程退出,但睡眠線程仍然活着。 (意思是程序沒有退出)

我想知道如果我是正確的做法嗎?

回答

4

sys.exit只會停止它執行的線程。如果程序中有其他非守護線程,它們將繼續執行。 Python庫文檔的Section 17.2.1包含:

線程可以被標記爲「守護 線程」。此標誌 的意義在於,只有守護程序線程在 左側時,整個Python程序 纔會退出。初始值從創建線程繼承 。該標誌可以通過守護程序屬性設置爲 。

另請參閱Why does sys.exit() not exit when called inside a thread in Python?