Python3中常用的处理时间和实现定时任务的方法的介绍


Posted in Python onApril 07, 2015

无论哪种编程语言,时间肯定都是非常重要的部分,今天来看一下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.\n"
  "First test total: %s\n"
  "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)
Python 相关文章推荐
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
Python实现判断字符串中包含某个字符的判断函数示例
Jan 08 Python
python os用法总结
Jun 08 Python
Python实现矩阵相乘的三种方法小结
Jul 26 Python
详解Python 正则表达式模块
Nov 05 Python
Python语法分析之字符串格式化
Jun 13 Python
pycharm 安装JPype的教程
Aug 08 Python
基于Python共轭梯度法与最速下降法之间的对比
Apr 02 Python
Python加速程序运行的方法
Jul 29 Python
Selenium alert 弹窗处理的示例代码
Aug 06 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
Python中使用pprint函数进行格式化输出的教程
Apr 07 #Python
利用QT写一个极简单的图形化Python闹钟程序
Apr 07 #Python
分析Python编程时利用wxPython来支持多线程的方法
Apr 07 #Python
Python中尝试多线程编程的一个简明例子
Apr 07 #Python
Python的Flask框架中Flask-Admin库的简单入门指引
Apr 07 #Python
用Python实现一个简单的线程池
Apr 07 #Python
浅谈Python程序与C++程序的联合使用
Apr 07 #Python
You might like
php 设计模式之 单例模式
2008/12/19 PHP
php pdo oracle中文乱码的快速解决方法
2016/05/16 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
认识延迟时间为0的setTimeout
2008/05/16 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
IE关闭时判断及AJAX注销案例学习
2013/02/18 Javascript
Extjs4实现两个GridPanel之间数据拖拽功能具体方法
2013/11/21 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
javascript使用avalon绑定实现checkbox全选
2015/05/06 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
JS新包管理工具yarn和npm的对比与使用入门
2016/12/09 Javascript
jQuery Form表单取值的方法
2017/01/11 Javascript
详解js的异步编程技术的方法
2017/02/09 Javascript
JavaScript实现获取远程的html到当前页面中
2017/03/26 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
2017/09/13 Javascript
微信小程序实现星级评分和展示
2018/07/05 Javascript
vue文件运行的方法教学
2019/02/12 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
JS实现贪吃蛇游戏
2019/11/15 Javascript
[55:47]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第三局
2016/02/27 DOTA
Python正则表达式匹配ip地址实例
2014/10/09 Python
详解Python中的__getitem__方法与slice对象的切片操作
2016/06/27 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
python在每个字符后添加空格的实例
2018/05/07 Python
Rhone官方网站:男士运动服装、健身服装和高级运动服
2019/05/01 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
中英文求职信范文
2014/01/27 职场文书
公司成本主管岗位责任制
2014/02/21 职场文书
美术教师个人工作总结
2015/02/06 职场文书
结婚当天新郎保证书
2015/05/08 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS