有時候我們在實作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()