2010-02-10 37 views
3

不斷運行時鐘並每5秒觸發一次其他功能。運行時鐘和觸發

請給我想法如何做到這一點。

感謝一束

+0

對此的真正答案取決於您提供的許多信息。使用GUI工具包定時器功能,像cron這樣的系統工具,像twisted這樣的異步IO框架或者'sched'模塊可能是合適的。哪個更合適取決於您的應用程序。 – 2010-02-11 01:23:23

回答

1
import time 

while True: 
    time.sleep(5) 
    someFunction() 

作爲gnibbler說,間隔實際上將(5秒+需要運行someFunction的時間)。如果您需要5秒:

targetTime = time.time() 
while True: 
    someFunction() 
    targetTime += 5 
    sleepTime = targetTime - time.time() 
    if sleepTime>0: 
     time.sleep(sleepTime) 
+0

這會觸發每個(5秒+運行'someFunction'所需的時間) – 2010-02-11 00:02:59

+0

你是對的,增加了一個更精確的版本 – interjay 2010-02-11 00:15:11

+0

好的+1然後(額外的廢話彌補15個字符) – 2010-02-11 00:30:13

1

您可以使用sched模塊中的調度程序。

只是讓計劃的函數在每次完成時重新安排自己。

4
>>> import sched, time 
>>> s = sched.scheduler(time.time, time.sleep) 
>>> def print_time(): 
...  s.enter(5, 1, print_time,()) 
...  print "From print_time", time.time() 
... 
>>> s.enter(0, 1, print_time,()) 
Event(time=1265846894.4069381, priority=1, action=<function print_time at 0xb7d1ab1c>, argument=()) 
>>> s.run() 
From print_time 1265846894.41 
From print_time 1265846899.41 
From print_time 1265846904.42 
From print_time 1265846909.42