前言
每次要使用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
(
)
雖然說上面的兩種現實看起來都很蠢,但是如果不借助第三方的庫,可能也只能這樣了.
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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