[Python] Daemon Thread

有時候我們在實作multithread的程式時,會發現當我們結束main thread之後,其他thread仍然還在執行,造成我們必須利用kill的方式結束整個程式。這樣的設計issue相信很多人都曾經遇到過,而python是怎麼解決這樣的問題呢?

有時候我們在實作multithread的程式時,當我們結束main thread之後,會發現其他thread仍然還在執行,造成必須利用kill command來結束整個程式的窘境。這樣的設計issue相信很多人都曾經遇到過,而python是怎麼解決這樣的問題呢?答案是透過建立Daemon thread的方式。

Daemon thread是一種在背景執行的thread,具有和main thread一同終止的特性,使用方式很簡單,只要將新產生的thread設定為Daemon thread即可。藉由這種daemon thread,我們就可以實作出當主程式結束後,其所產生的thread能同時結束的程式。

以下是簡單的範例程式:

import time
from threading import Thread

def myFunction():
	"""新的thread所執行的function"""
	while True:
		print "'myFunction' is running..."
		time.sleep(1)

#初始化Thread object
#target為新thread所要實作的functiom, name則是單純用來辨識。
myThread = Thread(target=myFunction, name="myThread") 

#將myThread設定為daemon thread
myThread.setDaemon(True)	

#啟動myThread
myThread.start()