python的程序执行时间计算模块:
【获取当前计算机的时间:年月日星期小时分钟秒微秒,时区等,代码如下:
from datetime import datetime
print('today():' , datetime.today())
print('now():' , datetime.now())
】
datetime模块中包含以下类:
dir(datetime.datetime)
['__add__', '__class__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__',
'__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__radd__', '__reduce__', '__reduce_ex__', '__repr__',
'__rsub__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', 'astimezone', 'combine', 'ctime',
'date', 'day', 'dst', 'fromordinal', 'fromtimestamp', 'hour', 'isocalendar', 'isoformat', 'isoweekday', 'max', 'microsecond',
'min', 'minute', 'month', 'now', 'replace', 'resolution', 'second', 'strftime', 'strptime', 'time', 'timetuple', 'timetz', 'today',
'toordinal', 'tzinfo', 'tzname', 'utcfromtimestamp', 'utcnow', 'utcoffset', 'utctimetuple', 'weekday', 'year']
1.1. 所有属性
date.year、date.month、date.day:年、月、日;
time.min、time.max:time类所能表示的最小、最大时间。
(其中,time.min = time(0, 0, 0, 0),time.max = time(23, 59, 59, 999999));
time.resolution:时间的最小单位,这里是1微秒;
time.hour时、
time.minute分
time.second秒
time.microsecond微秒
time.tzinfo:时区信息;
datetime.min:datetime所能表示的最小值
datetime.max:datetime所能表示的与最大值;
datetime.resolution:datetime最小单位;
datetime.year、month、day、hour、minute、second、microsecond、tzinfo:年、月、日、时、分、秒、毫秒、时区;
1.2 datetime模块下的所有函数
======date类===========
- date.today():返回一个表示当前本地日期的date对象;
- date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
- datetime.fromordinal(ordinal):将Gregorian日历时间转换为date对象;(Gregorian
- Calendar :一种日历表示方法,类似于我国的农历,西方国家使用比较多,此处不详细展开讨论。)
- date.timetuple():返回日期对应的time.struct_time对象;
- date.toordinal():返回日期对应的Gregorian Calendar日期;
- date.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
- data.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
- date.isocalendar():返回格式如(year,month,day)的元组;
- date.isoformat():返回格式如’YYYY-MM-DD’的字符串;
==========time类==============
===========datetime类===========
%%主要函数:today();now();weekday ();
- datetime.today():返回一个表示当前本地时间的datetime对象;
- datetime.now([tz]):返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
- datetime.utcnow():返回一个当前utc时间的datetime对象;
- datetime.fromtimestamp(timestamp[,tz]):根据时间戮创建一个datetime对象,参数tz指定时区信息;
- datetime.utcfromtimestamp(timestamp):根据时间戮创建一个datetime对象;
- datetime.combine(date, time):根据date和time,创建一个datetime对象;
- datetime.date():获取date对象。
- datetime.time():获取time对象。
- datetime. replace([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ ,tzinfo] ] ] ] ] ] ] ]): 返回一个替换了指定日期时间字段的新datetime对象。
- datetime.timetuple ():返回一个时间元素, 等价于time.localtime()。
- datetime. utctimetuple():返回UTC时间元组对象, 等价于time.localtime()。
- - datetime. toordinal ():返回日期对应的Gregorian Calendar 日期。
- datetime. weekday ():返回 0 ~ 6 表示星期几(星期一是0,依此类推)。
- datetime. isocalendar ():返回一个三元组格式 (year, month, day)。
- datetime. isoformat ([ sep] ):返回一个 ISO 8601 格式的日期字符串,如 “YYYY-MM-DD”的字符串。
- datetime. ctime():返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple()));
- datetime. strftime (format):返回自定义格式化字符串表示日期。
1.3.时间格式
%a 星期的简写。如 星期三为Web
%A 星期的全写。如 星期三为Wednesday
%b 月份的简写。如4月份为Apr
%B月份的全写。如4月份为April
%c: 日期时间的字符串表示。(如: 04/07/10 10:43:39)
%d: 日在这个月中的天数(是这个月的第几天)
%f: 微秒(范围[0,999999])
%H: 小时(24小时制,[0, 23])
%I: 小时(12小时制,[0, 11])
%j: 日在年中的天数 [001,366](是当年的第几天)
%m: 月份([01,12])
%M: 分钟([00,59])
%p: AM或者PM
%S: 秒(范围为[00,61],为什么不是[00, 59],参考python手册~_~)
%U: 周在当年的周数当年的第几周),星期天作为周的第一天
%w: 今天在这周的天数,范围为[0, 6],6表示星期天
%W: 周在当年的周数(是当年的第几周),星期一作为周的第一天
%x: 日期字符串(如:04/07/10)
%X: 时间字符串(如:10:43:39)
%y: 2个数字表示的年份
%Y: 4个数字表示的年份
%z: 与utc时间的间隔 (如果是本地时间,返回空字符串)
%Z: 时区名称(如果是本地时间,返回空字符串)
%%: %% => %
1.4. 例子
说明:模块datetime.py文件
#文件名datetime.py
#文件中定义了5个类
class date():
class time();
class datetime():
class timedelta():
class ztinfo():
from datetime import *
#或
from datetime import date,time,datetime,timedelta
import time
#自己定义一个datetime的类的对象或直接使用默认对象
D = date #定义一个datetime.date类的对象
print('date类输出结果:',D(2017,5,5), #自己输出日期
D.max,D.min, #9999-12-31 #0001-01-01
D.today(), #获得当前日期2017-01-07
D.year,D.month, #
D.fromtimestamp(time.time()), #获得当前日期
D.today().timetuple(), #当前日期的表示time.struct_time(tm_year=2017, tm_mon=1, tm_mday=7, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=7, tm_isdst=-1)
D.today().weekday(), #获取当前日期是星期几(0-6)
D.today().isoweekday(),#获取当前日期是星期几(1-7)
datetime.tzinfo)
#========datetime类使用=============
print('datetime.max:' , datetime.max)
print('datetime.min:' , datetime.min)
print('datetime.resolution:' , datetime.resolution)
print('today():' , datetime.today()) #
print('now():' , datetime.now())
print('utcnow():' , datetime.utcnow())
print('fromtimestamp(tmstmp):' , datetime.fromtimestamp(time.time()))
print('utcfromtimestamp(tmstmp):' , datetime.utcfromtimestamp(time.time()))
"""
显示结果:
datetime.max: 9999-12-31 23:59:59.999999
datetime.min: 0001-01-01 00:00:00
datetime.resolution: 0:00:00.000001
today(): 2017-01-07 16:10:57.309565
now(): 2017-01-07 16:10:57.309564
utcnow(): 2017-01-07 08:10:57.310568
fromtimestamp(tmstmp): 2017-01-07 16:10:57.310568
utcfromtimestamp(tmstmp): 2017-01-07 08:10:57.310568
2017-01-07 2018-01-07
time.struct_time(tm_year=2017, tm_mon=1, tm_mday=7, tm_hour=16, tm_min=10, tm_sec=57, tm_wday=6, tm_yday=7, tm_isdst=-1
"""
“`print ‘(%Y-%m-%d %H:%M:%S %f): ‘, dt.strftime(‘%Y-%m-%d %H:%M:%S %f’)
print ‘(%Y-%m-%d %H:%M:%S %p): ‘, dt.strftime(‘%y-%m-%d %I:%M:%S %p’)
print ‘%%a: %s ’ % dt.strftime(‘%a’)
print ‘%%A: %s ’ % dt.strftime(‘%A’)
print ‘%%b: %s ’ % dt.strftime(‘%b’)
print ‘%%B: %s ’ % dt.strftime(‘%B’)
print ‘日期时间%%c: %s ’ % dt.strftime(‘%c’)
print ‘日期%%x:%s ’ % dt.strftime(‘%x’)
print ‘时间%%X:%s ’ % dt.strftime(‘%X’)
print ‘今天是这周的第%s天 ’ % dt.strftime(‘%w’)
print ‘今天是今年的第%s天 ’ % dt.strftime(‘%j’)
print ‘今周是今年的第%s周 ’ % dt.strftime(‘%U’)
#--------python-----------
st = datetime.now() #计时开始
c1 = func(******)
et = datetime.now()-st #计时结束
print('运行时间',et.total_seconds)
#---------numpy-----------
st = datetime.now() #计时开始
c2 = func2(size)
et = datetime.now()-st #计时结束
print('运行时间',et.microseconds)
from datetime import *
starttime = datetime.now() #datetime.today()
#----------------------
程序部分
#----------------------
endtime = datetime.now()
run_time = endtime-starttime
print('程序执行总时间:\n',run_time, #直接打印
run_time.seconds, #打印秒
run_time.mircoseconds, #打印微秒10-6s
run_time.minute,#打印分
run_time.total_seconds) #打印总秒数
#=============time模块==========
"""
time.py就一个类,即time
"""
ISOTIMEFORMAT = '%Y-%m-%d %X'
print('\n\n\n\ntime类是各个时间格式输出结果:\n',
'time.time():',time.time(),
'\ntime.localtime():',time.localtime(),#年月日hms,星期,当前时区
'\nstrftime():',time.strftime(ISOTIMEFORMAT,time.localtime()),#对时间做转换
'\ngmtime():',time.gmtime(),#显示与time.time一样
'\n时区:',time.timezone,
'\nctime():',time.ctime())#Sun Jan 7 16:39:16 2018)
#1.python获取当前时间
#time.time() 获取当前时间戳
#time.localtime() 当前时间的struct_time形式
#time.ctime() 当前时间的字符串形式
#2.python格式化字符串
#格式化成2009-03-20 11:45:39形式
#time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
#格式化成Sat Mar 28 22:24:24 2009形式
#time.strftime("%a %b %d %H:%M:%S %Y", time.localtime())
#3.将格式字符串转换为时间戳
#a = "Sat Mar 28 22:24:24 2009"
#b = time.mktime(time.strptime(a,"%a %b %d %H:%M:%S %Y"))
#
#3.clock获取程序运行的时间
#clock() -> floating point number
#该函数有两个功能,
#在第一次调用的时候,返回的是程序运行的实际时间;
#以第二次之后的调用,返回的是自第一次调用后,到这次调用的时间间隔
time.sleep(1)
print('clock1:%s',time.clock())
time.sleep(1)
print('clock2:%s',time.clock())
time.sleep(1)
print('clock3:%s',time.clock())
#4.sleep(...)
#sleep(seconds)
#线程推迟指定的时间运行,经过测试,单位为秒,但是在帮助文档中有以下这样一句话,这关是看不懂
#“The argument may be a floating point number for subsecond precision.”
"""
获取程序运行总时间的方法
"""
#1使用time.time()函数
start_time = time.time()
time.sleep(2)
end_time = time.time()
totaltime = end_time - start_time
print('time测试程序运行时间为:',totaltime)
"""
time.time()获取自纪元以来的当前时间(以秒为单位)。如果系统时钟提供它们,则可能存在秒的分数。所以这个地方返回的是一个浮点型类型。这里获取的也是程序的执行时间。
"""
#2使用clock函数
start_time1 = time.clock()
time.sleep(2)
end_time1 = time.clock()
totaltime2 = end_time1 - start_time1
print('clock测试程序运行时间为:',totaltime2)
print('clock1:%s',time.clock())
'''
time.clock()返回程序开始或第一次
被调用clock()以来的CPU时间。
这具有与系统记录一样多的精度。
返回的也是一个浮点类型。这里获
得的是CPU的执行时间。
注:程序执行时间=cpu时间 + io时间 + 休眠或者等待时间
'''
运行结果:
time测试程序运行时间为: 2.0005414485931396
clock测试程序运行时间为: 2.00036966456787
clock1:%s 1134.6914389713836
计算程序运行时间的:方法datetime和方法time都包含了其他程序使用CPU的时间,是程序开始到程序结束的运行时间。方法clock只计算了程序运行的CPU时间