一、linux自带服务或shell 命令
1. 大名鼎鼎的crontab
crontab 作为linux自带的定时服务,能指定周期性的执行某些任务,或者在某天或者某周的特定时间执行某些任务,但是执行的精度是分钟
2. watch 命令
watch命令可以周期性的执行某个命令,并将结果显示在标准输出上
一个常见的例子可以是
1) 每隔3秒往/tmp/aa中写入一个字符串 abc
watch -n 3 ‘echo "abc" >> /tmp/aa‘
2) 每隔3秒查看一下/proc/net/sockstat 的内容
watch -n 3 cat /proc/net/sockstat
此命令的执行精度是秒级
二、python 语言中的某些定时器
最常见的有两个
1.
import time
from threading import Timer
def print_time():
print "From print_time", time.time()
def print_some_times():
print time.time()
Timer(5, print_time, ()).start()
Timer(10, print_time, ()).start()
time.sleep(11) # sleep while time-delay events execute
print time.time()
print_some_times()
# The timer class was contributed by Itamar Shtull-Trauring
def Timer(*args, **kwargs):
return _Timer(*args, **kwargs)
class _Timer(Thread):
"""Call a function after a specified number of seconds:
t = Timer(30.0, f, args=[], kwargs={})
t.start()
t.cancel() # stop the timer‘s action if it‘s still waiting
"""
def __init__(self, interval, function, args=[], kwargs={}):
Thread.__init__(self)
self.interval = interval
self.function = function
self.args = args
self.kwargs = kwargs
self.finished = Event()
def cancel(self):
"""Stop the timer if it hasn‘t finished yet"""
self.finished.set()
def run(self):
self.finished.wait(self.interval)
if not self.finished.is_set():
self.function(*self.args, **self.kwargs)
self.finished.set()
import sched
import time
s = sched.scheduler(time.time, time.sleep)
def print_time():
print "From print_time", time.time()
def print_some_times():
print time.time()
s.enter(5, 1, print_time, ())
s.enter(10, 1, print_time, ())
s.run()
print time.time()
print_some_times()
from threading import Thread, Event class PeriodTimer(Thread): def __init__(self, interval, function, args=[], kwargs={}): Thread.__init__(self) self.interval = interval self.function = function self.args = args self.kwargs = kwargs self.finished = Event() def cancel(self): """Stop the timer if it hasn‘t finished yet""" self.finished.set() def run(self): while not self.finished.is_set(): self.finished.wait(self.interval) if not self.finished.is_set(): self.function(*self.args, **self.kwargs)
原文:http://blog.csdn.net/woshiaotian/article/details/22824111