【Python】使用time.clock报错的问题
举例:使用clock记录运行时间报错
在使用北理工嵩天《Python程序设计基础》第二版学习的时候,教材参考代码出现warning,如下:
:DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use
time.perf_counter
ortime.process_time
insteadclock()
弃用警告:时间时钟在python3.3中已被弃用,并将从python3.8:使用
time.perf_counter
或time.process_time
而不是time.clock()
解决方法:
按照要求,将time.clock()
替换为time.perf_counter
或 time.process_time
任意一种即可
实例如下:
错误代码:
#e6.1CalPi.py
from random import random
from math import sqrt
from time import clock
DARTS = 1000
hits = 0.0
clock() #旧版本调用time.clock是没问题的
for i in range(1, DARTS+1):
x, y = random(), random()
dist = sqrt(x ** 2 + y ** 2)
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits/DARTS)
print("Pi值是{}.".format(pi))
print("运行时间是: {:5.5}s".format(clock()))
输出结果:
Pi值是3.236.
C:/Users/dell/PycharmProjects/e6.1CalPi/e6.1CalPi.py:7: DeprecationWarning: time.clock has been deprecated in Python 3.3 and will be removed from Python 3.8: use time.perf_counter or time.process_time instead
运行时间是: 0.071226s
clock()
C:/Users/dell/PycharmProjects/e6.1CalPi/e6.1CalPi.py:15: DeprecationWarning: time.clock has been deprecated in Python 3.3 andwill be removed from Python 3.8: use time.perf_counter or time.process_time
instead
print(“运行时间是: {:5.5}s”.format(clock()))
Process finished with exit code 0
修改之后
使用 time.perf_counter 或 time.process_time替代:
#e6.1CalPi.py
from random import random
from math import sqrt
from time import process_time # 引入 time.perf_counter 用以替换clock
DARTS = 1000
hits = 0.0
process_time() # time.perf_counter or time.process_time替代time.clock
for i in range(1, DARTS+1):
x, y = random(), random()
dist = sqrt(x ** 2 + y ** 2)
if dist <= 1.0:
hits = hits + 1
pi = 4 * (hits/DARTS)
print("Pi值是{}.".format(pi))
print("运行时间是: {:5.5}s".format(process_time()))
输出结果:
Pi值是3.128.
运行时间是: 0.10938s
Process finished with exit code 0
最后总结:
将time.clock()
替换为time.perf_counter
或 time.process_time
任意一种即可