2012-08-14 53 views
1

我對python比較陌生,迄今爲止我只瀏覽了編程的表面,這就是爲什麼我對守護進程感到困惑。我通常知道他們在做什麼,但我不確定在Python中實現它們的最佳方式是什麼。我發現this鏈接,演示如何在python中創建守護進程。然而,我想知道這是否不同的守護進程實現

#!/usr/bin/env python3.2 
import threading 

class Update(threading.Thread): 
    def __init__(self): 
     threading.Thread.__init__(self) 

    def run(self): 
     pass  #something you want to run in the background 

continous = Update 
continous.daemon = True 
continous.start() 

會一樣有效?

+1

在問題中加入你指的鏈接。 – stderr 2012-08-14 04:13:46

+0

哎呦,對不起。我剛纔添加了它 – Lobabob 2012-08-14 20:37:32

回答

0

threading documentation:「整個Python程序退出時,沒有活着的非守護線程剩下」。守護程序線程將在應用程序完成後終止。

爲了在Python中實現一個系統守護進程,你應該使用os.fork。看看example of simple daemon

+0

你引用的是我發佈我的問題時已經記住的內容。我提供的代碼示例創建了一個守護進程線程,在主線程退出後,它將在後臺運行。 – Lobabob 2012-08-14 14:11:36

+0

由於整個主進程終止並且沒有創建新進程(守護進程),因此線程將在主線程退出後運行。如果是這樣的話,那麼代碼(http://pastebin.com/646t71Ba)將無限期地將消息打印到/tmp/log.txt,而日誌文件仍然(幾乎)爲空。 – Vladimir 2012-08-14 15:06:52