前言
每次要使用python的定时器的时候总是想着百度,干脆自己写一个记录一下:
使用的是两种方式实现,我一般喜欢用方式二Timer实现,下面看实现方式:
方式一:sched
准确的说,它是一个调度(延时处理机制),每次想要定时执行某任务都必须写入一个调度。
'''
使用sched模块实现的timer,sched模块不是循环的,一次调度被执行后就Over了,
如果想再执行,可以使用while循环的方式不停的调用该方法
'''
import
time
,
sched
#被调度触发的函数
def
event_func
(
msg
)
:
print
(
"Current Time:"
,
time
.
strftime
(
"%y-%m-%d %H:%M:%S"
)
,
'msg:'
,
msg
)
def
run_function
(
)
:
#初始化sched模块的scheduler类
s
=
sched
.
scheduler
(
time
.
time
,
time
.
sleep
)
#设置一个调度,因为time.sleep()的时间是一秒,所以timer的间隔时间就是sleep的时间,加上enter的第一个参数
s
.
enter
(
0
,
2
,
event_func
,
(
"Timer event."
,
)
)
s
.
run
(
)
def
timer1
(
)
:
while
True
:
#sched模块不是循环的,一次调度被执行后就Over了,如果想再执行,可以使用while循环的方式不停的调用该方法
time
.
sleep
(
1
)
run_function
(
)
if
__name__
==
"__main__"
:
timer1
(
)
方式二:Timer
'''
Timer类也是一次性触发的,思路和sched大概差不多
'''
import
time
import
threading
def
timer_start
(
)
:
t
=
threading
.
Timer
(
1
,
test_func
,
(
"Parameter1"
,
)
)
t
.
start
(
)
def
test_func
(
msg1
)
:
print
(
"I'm test_func,"
,
msg1
)
timer_start
(
)
def
timer2
(
)
:
timer_start
(
)
while
True
:
time
.
sleep
(
1
)
if
__name__
==
"__main__"
:
timer2
(
)
虽然说上面的两种现实看起来都很蠢,但是如果不借助第三方的库,可能也只能这样了.