前言
每次要使用python的定時(shí)器的時(shí)候總是想著百度,干脆自己寫一個(gè)記錄一下:
使用的是兩種方式實(shí)現(xiàn),我一般喜歡用方式二Timer實(shí)現(xiàn),下面看實(shí)現(xiàn)方式:
方式一:sched
準(zhǔn)確的說,它是一個(gè)調(diào)度(延時(shí)處理機(jī)制),每次想要定時(shí)執(zhí)行某任務(wù)都必須寫入一個(gè)調(diào)度。
'''
使用sched模塊實(shí)現(xiàn)的timer,sched模塊不是循環(huán)的,一次調(diào)度被執(zhí)行后就Over了,
如果想再執(zhí)行,可以使用while循環(huán)的方式不停的調(diào)用該方法
'''
import
time
,
sched
#被調(diào)度觸發(fā)的函數(shù)
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
)
#設(shè)置一個(gè)調(diào)度,因?yàn)閠ime.sleep()的時(shí)間是一秒,所以timer的間隔時(shí)間就是sleep的時(shí)間,加上enter的第一個(gè)參數(shù)
s
.
enter
(
0
,
2
,
event_func
,
(
"Timer event."
,
)
)
s
.
run
(
)
def
timer1
(
)
:
while
True
:
#sched模塊不是循環(huán)的,一次調(diào)度被執(zhí)行后就Over了,如果想再執(zhí)行,可以使用while循環(huán)的方式不停的調(diào)用該方法
time
.
sleep
(
1
)
run_function
(
)
if
__name__
==
"__main__"
:
timer1
(
)
方式二:Timer
'''
Timer類也是一次性觸發(fā)的,思路和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
(
)
雖然說上面的兩種現(xiàn)實(shí)看起來都很蠢,但是如果不借助第三方的庫,可能也只能這樣了.
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
