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 相关文章推荐
python中while循环语句用法简单实例
May 07 Python
使用python加密自己的密码
Aug 04 Python
Python基于identicon库创建类似Github上用的头像功能
Sep 25 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
Python 学习教程之networkx
Apr 15 Python
Django中信号signals的简单使用方法
Jul 04 Python
基于python 微信小程序之获取已存在模板消息列表
Aug 05 Python
Python DataFrame一列拆成多列以及一行拆成多行
Aug 06 Python
Python 私有属性和私有方法应用场景分析
Jun 19 Python
Python魔术方法专题
Jun 19 Python
Python importlib模块重载使用方法详解
Oct 13 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
40年前的这部特摄片恐龙特级克塞号80后的共同回忆
2020/03/08 日漫
php printf输出格式使用说明
2010/12/05 PHP
PHP+jQuery 注册模块开发详解
2014/10/14 PHP
详解PHP中的mb_detect_encoding函数使用方法
2015/08/18 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
PHP加密技术的简单实现
2016/09/04 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
javascript利用控件对windows的操作实现原理与应用
2012/12/23 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
JS小游戏之极速快跑源码详解
2014/09/25 Javascript
javascript中clone对象详解
2014/12/03 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
Javascript URI 解析介绍
2015/03/15 Javascript
WebApi+Bootstrap+KnockoutJs打造单页面程序
2016/05/16 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
python中的sort方法使用详解
2014/07/25 Python
在SAE上部署Python的Django框架的一些问题汇总
2015/05/30 Python
小小聊天室Python代码实现
2016/08/17 Python
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
Python正则表达式匹配数字和小数的方法
2019/07/03 Python
python输出带颜色字体实例方法
2019/09/01 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
Python之Matplotlib文字与注释的使用方法
2020/06/18 Python
python在地图上画比例的实例详解
2020/11/13 Python
ghd官网:英国ghd直发器品牌
2018/05/04 全球购物
工商管理实习生自我鉴定范文
2013/12/18 职场文书
出纳工作检讨书
2014/10/18 职场文书
农村结婚典礼主持词
2015/06/29 职场文书