2010-11-11 101 views
7

我想每2小時執行一次任務。 Python在Threading模塊中有一個Timer,但它是否滿足我的需求?我如何自己生成適當的Timer?在進程內每隔一段時間執行一次任務

+2

您是否想每兩小時執行一次任務,還是希望Python腳本每兩小時執行一次? – 2010-11-11 09:39:53

+0

每2小時調用一次python函數 – 2010-11-11 11:39:24

回答

17

如果您希望您的代碼來運行每2個小時的最簡單方法是使用cron或 類似的調度根據您的操作系統

上,如果你希望你的PROGRAMM調用一個函數每n秒(7200在你的情況) 你可以使用線程和event.wait。下面的例子將啓動 被觸發每一秒,並打印字符串計時器到stdout

import threading 
import time 

class TimerClass(threading.Thread): 
    def __init__(self): 
     threading.Thread.__init__(self) 
     self.event = threading.Event() 

    def run(self): 
     while not self.event.is_set(): 
      print "do something" 
      self.event.wait(1) 

    def stop(self): 
     self.event.set() 

tmr = TimerClass() 
tmr.start() 

time.sleep(10) 

tmr.stop() 
+0

Thx for your reply。它運行良好,我學到了。 – 2010-11-11 11:46:25

+0

@wok爲什麼?啓動被調用一次,並用於執行設置,運行是做你想做的工作的方法 – 2010-11-11 13:13:45

+0

我對繼承的錯誤。 – Wok 2010-11-11 13:17:14

0

這可能是一個解決辦法.......

import time 

    def fun1(): 
     print "Hi " 

    while 1: 

     fun1() 
     time.sleep(5) 

功能FUN1將被執行每5秒後。但我不知道這是否是在特定時間後調用函數的好方法。這個解決方案的任何缺點?

相關問題