视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
Python3中常用的处理时间和实现定时任务的方法的介绍
2020-11-27 14:39:48 责编:小采
文档


无论哪种编程语言,时间肯定都是非常重要的部分,今天来看一下python如何来处理时间和python定时任务,注意咯:本篇所讲是python3版本的实现,在python2版本中的实现略有不同,有时间会再写一篇以便大家区分。
1.计算明天和昨天的日期

#! /usr/bin/env python
#coding=utf-8
# 获取今天、昨天和明天的日期
# 引入datetime模块
import datetime 
#计算今天的时间
today = datetime.date.today()
#计算昨天的时间 
yesterday = today - datetime.timedelta(days = 1)
#计算明天的时间
tomorrow = today + datetime.timedelta(days = 1) 
#打印这三个时间
print(yesterday, today, tomorrow)

2.计算上一个的时间

方法一:

#! /usr/bin/env python
#coding=utf-8
# 计算上一个的时间
#引入datetime,calendar两个模块
import datetime,calendar
 
last_friday = datetime.date.today() 
oneday = datetime.timedelta(days = 1) 
 
while last_friday.weekday() != calendar.FRIDAY: 
 last_friday -= oneday 
 
print(last_friday.strftime('%A, %d-%b-%Y'))

方法二:借助模运算寻找上一个星期五

#! /usr/bin/env python
#coding=utf-8
# 借助模运算,可以一次算出需要减去的天数,计算上一个星期五
#同样引入datetime,calendar两个模块
import datetime 
import calendar 
 
today = datetime.date.today() 
target_day = calendar.FRIDAY 
this_day = today.weekday() 
delta_to_target = (this_day - target_day) % 7
last_friday = today - datetime.timedelta(days = delta_to_target) 
 
print(last_friday.strftime("%d-%b-%Y"))

3.计算歌曲的总播放时间

#! /usr/bin/env python
#coding=utf-8
# 获取一个列表中的所有歌曲的播放时间之和 
import datetime 
 
def total_timer(times): 
 td = datetime.timedelta(0) 
 duration = sum([datetime.timedelta(minutes = m, seconds = s) for m, s in times], td) 
 return duration 
 
times1 = [(2, 36), 
 (3, 35), 
 (3, 45), 
 ] 
times2 = [(3, 0), 
 (5, 13), 
 (4, 12), 
 (1, 10), 
 ] 
 
assert total_timer(times1) == datetime.timedelta(0, 596) 
assert total_timer(times2) == datetime.timedelta(0, 815) 
 
print("Tests passed.
"
 "First test total: %s
"
 "Second test total: %s" % (total_timer(times1), total_timer(times2)))

4.反复执行某个命令

#! /usr/bin/env python
#coding=utf-8
# 以需要的时间间隔执行某个命令 
 
import time, os 
 
def re_exe(cmd, inc = 60): 
 while True: 
 os.system(cmd); 
 time.sleep(inc) 
 
re_exe("echo %time%", 5)

5.定时任务

#! /usr/bin/env python
#coding=utf-8
#这里需要引入三个模块
import time, os, sched 
 
# 第一个参数确定任务的时间,返回从某个特定的时间到现在经历的秒数 
# 第二个参数以某种人为的方式衡量时间 
schedule = sched.scheduler(time.time, time.sleep) 
 
def perform_command(cmd, inc): 
 os.system(cmd) 
 
def timming_exe(cmd, inc = 60): 
 # enter用来安排某事件的发生时间,从现在起第n秒开始启动 
 schedule.enter(inc, 0, perform_command, (cmd, inc)) 
 # 持续运行,直到计划时间队列变成空为止 
 schedule.run() 
 
 
print("show time after 10 seconds:") 
timming_exe("echo %time%", 10)

6.利用sched实现周期调用

#! /usr/bin/env python
#coding=utf-8
import time, os, sched 
 
# 第一个参数确定任务的时间,返回从某个特定的时间到现在经历的秒数 
# 第二个参数以某种人为的方式衡量时间 
schedule = sched.scheduler(time.time, time.sleep) 
 
def perform_command(cmd, inc): 
 # 安排inc秒后再次运行自己,即周期运行 
 schedule.enter(inc, 0, perform_command, (cmd, inc)) 
 os.system(cmd) 
 
def timming_exe(cmd, inc = 60): 
 # enter用来安排某事件的发生时间,从现在起第n秒开始启动 
 schedule.enter(inc, 0, perform_command, (cmd, inc)) 
 # 持续运行,直到计划时间队列变成空为止 
 schedule.run() 
 
 
print("show time after 10 seconds:") 
timming_exe("echo %time%", 10)

下载本文
显示全文
专题