time
import
import datetime
import time
Definition of time
- from 1970-01-01 00:00:00 UTC
Coordinated Universal Time
as the float
format of ‘seconds’
For example
- use structured time lists
[ year,month,day,hours,minutes,seconds…]
表示从1970-01-01 00:00:00 UTC,开始到现在所经历的时间.
time.struct_time(tm_year=2018, tm_mon=1, tm_mday=31, tm_hour=1, tm_min=37,
tm_sec=36, tm_wday=2, tm_yday=31, tm_isdst=0)
Function of time
time.clock()
返回程序运行的整个时间段中中CPU运行的时间
def cpu_run():
start = time.clock()
for i in range(1000):
j = i * 2
for k in range(j):
t = k
print(t)
end = time.clock()
print('CPU excution takes: ',end - start, 'seconds')
python3.8
就不再支持time.clock()
了
If python > 3.8
用 time.perf_counter()
替换
def cpu_run():
start = time.perf_counter()
for i in range(1000):
j = i * 2
for k in range(j):
t = k
print(t)
end = time.perf_counter()
print('CPU excution takes: ',end - start, 'seconds')
time.sleep()
爬虫中常用,让程序暂停执行指定的秒数
time.sleep(2)
time.localtime()
用结构化的时间组,表示本地时间
time.ctime()
用字符串string表示时间
time.mktime()
将本地时间列表转化为浮点数的秒来表示
time.strftime()
将时间组时间转化为指定格式的String类
time.strptime
将String类时间转化为时间组格式
time.tzset()
更改本地时区
Applicaiton
用time来计算一下程序执行所耗时间
def run():
start = time.time()
for i in range(1000):
j = i * 2
for k in range(j):
t = k
print(t)
end = time.time()
print('This program excution takes: ',end - start, 'seconds')
Optimize
start = time.perf_counter()
for i in range(1000):
j = i * 2
for k in range(j):
t = k
print(t)
end = time.perf_counter()
print('CPU excution takes: ',end - start, 'seconds')
此段代码CPU执行时间大概5秒
那么问题来了:
CPU真的执行了这么长时间么?
会不会有什么东西是我没考虑进去的呢?
仔细看一下,这段程序主要内容就是两个for循环,for循环执行计算的时候CPU肯定是在运行的
那么print()函数打印期间这个时间段的CPU执行时间有没有算进去?
带着疑问,我们进行第三次测试,此次我们去掉print(),直接让CPU完成整个for循环的计算:
因为去掉了print(),所以只剩下了完整的for循环,CPU可以连续执行
不必一遍for循环一边print()来回切换
连续执行的CPU还是很快的~
所以 ,以后写代码时,要精简不必要的开销,譬如经常使用print()