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获取GY-85九轴模块信息示例
Dec 05 Python
Python处理JSON时的值报错及编码报错的两则解决实录
Jun 26 Python
TensorFlow模型保存和提取的方法
Mar 08 Python
Python中的支持向量机SVM的使用(附实例代码)
Jun 26 Python
Python实现结构体代码实例
Feb 10 Python
python实现IOU计算案例
Apr 12 Python
使用matlab 判断两个矩阵是否相等的实例
May 11 Python
python 三种方法实现对Excel表格的读写
Nov 19 Python
Python读写Excel表格的方法
Mar 02 Python
python实现Thrift服务端的方法
Apr 20 Python
Pytorch中Softmax与LogSigmoid的对比分析
Jun 05 Python
Python识别花卉种类鉴定网络热门植物并自动整理分类
Apr 08 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
使用网络地址转换实现多服务器负载均衡
2006/10/09 PHP
php上的memcache和memcached两个pecl库
2010/03/29 PHP
PHP 自定义错误处理函数的使用详解
2013/05/10 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
php中switch与ifelse的效率区别及适用情况分析
2015/02/12 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
跨浏览器的事件对象介绍
2012/06/27 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
jQuery实现Meizu魅族官方网站的导航菜单效果
2015/09/14 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
详解Angular 开发环境搭建
2017/06/22 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
详解vue中的父子传值双向绑定及数据更新问题
2019/06/13 Javascript
javascript的惯性运动实现代码实例
2019/09/07 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
[56:41]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs OG
2018/04/01 DOTA
python实现简单socket程序在两台电脑之间传输消息的方法
2015/03/13 Python
Python类的用法实例浅析
2015/05/27 Python
Pycharm编辑器技巧之自动导入模块详解
2017/07/18 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
在PyCharm环境中使用Jupyter Notebook的两种方法总结
2018/05/24 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
python中class的定义及使用教程
2019/09/18 Python
pycharm 中mark directory as exclude的用法详解
2020/02/14 Python
python支持多继承吗
2020/06/19 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
英国家用电器折扣网站:Electrical Discount UK
2018/09/17 全球购物
工商治理实习生的自我评价分享
2014/02/20 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
毕业实习计划书
2015/01/16 职场文书
毕业生的自我鉴定表范文
2019/05/16 职场文书