1.Python3.x:定时任务实现方式
https://www.cnblogs.com/lizm166/p/8169028.html
# 使用Timer
# method one
import threading
def timing_task():
print(time.time())
print('haha')
# 误差小于0.0004s
timer = threading.Timer(3, timing_task) # 3s后执行,not exactly
timer.start()
sched模块:
# method two
# 测试时误差小于0.005s
>>> import sched, time
>>> s = sched.scheduler(time.time, time.sleep)
>>> def print_time(a='default'):
... print("From print_time", time.time(), a)
...
>>> def print_some_times():
... print(time.time())
... s.enter(10, 1, print_time)
... s.enter(5, 2, print_time, argument=('positional',)) # not exactly
... s.enter(5, 1, print_time, kwargs={'a': 'keyword'})
... s.run()
... print(time.time())
...
>>> print_some_times()
930343690.257
From print_time 930343695.274 positional
From print_time 930343695.275 keyword
From print_time 930343700.273 default
930343700.276
Schedule模块:https://schedule.readthedocs.io/en/stable/
# 在while循环中,schedule.run_pending()不断查询schedule中的任务。
# 不同的任务可以设置不同的时间去运行。
...
def read_mysql_to_csv(filename):
with codecs.open(filename=filename, mode='w') as f:
write = csv.writer(f, dialect='excel')
results = query()
for result in results:
write.writerow(result)
schedule.every().day.at("17:49").do(read_mysql_to_csv, "test")
while True:
schedule.run_pending()
time.sleep(10) #