分别计算两段代码的运行时间
import numpy as np
import time
x1 = [9, 2, 5, 0, 0, 7, 5, 0, 0, 0, 9, 2, 5, 0, 0]
x2 = [9, 2, 2, 9, 0, 9, 2, 5, 0, 0, 9, 2, 5, 0, 0]
time1 = time.process_time()
outer = np.zeros((len(x1),len(x2)))
for i in range(len(x1)):
for j in range(len(x2)):
dst[i,j] = x1[i] * x2[j]
time2 = time.process_time()
time = time2 - time1
print(str(time * 1000)+"ms")
mul = np.zeros(len(x1))
time3 = time.process_time()
for i in range(len(x1)):
outer[i] = x1[i] * x2[i]
time4 = time.process_time()
time = time4 - time3
print(str(time * 1000)+"ms")
报错:
AttributeError Traceback (most recent call last)
<ipython-input-24-8c94afab5cff> in <module>
37 ### CLASSIC ELEMENTWISE IMPLEMENTATION ###
38 mul = np.zeros(len(x1))
---> 39 time3 = time.process_time()
40 for i in range(len(x1)):
41 outer[i] = x1[i] * x2[i]
AttributeError: 'float' object has no attribute 'process_time'
原因:“ time = time2 - time1 ” 后,time 等于一个float值,已经无法作为模块进行访问了,所以,“time.process_time()” 这句会报错
解决:更改时间变量的名称,例如timeval。
import numpy as np
import time
x1 = [9, 2, 5, 0, 0, 7, 5, 0, 0, 0, 9, 2, 5, 0, 0]
x2 = [9, 2, 2, 9, 0, 9, 2, 5, 0, 0, 9, 2, 5, 0, 0]
### CLASSIC OUTER PRODUCT IMPLEMENTATION ###
time1 = time.process_time()
outer = np.zeros((len(x1),len(x2)))
for i in range(len(x1)):
for j in range(len(x2)):
dst[i,j] = x1[i] * x2[j]
time2 = time.process_time()
timeval = time2 - time1
print(str(timeval * 1000)+"ms")
### CLASSIC ELEMENTWISE IMPLEMENTATION ###
mul = np.zeros(len(x1))
time3 = time.process_time()
for i in range(len(x1)):
outer[i] = x1[i] * x2[i]
time4 = time.process_time()
timeval = time4 - time3
print(str(timeval * 1000)+"ms")
### CLASSIC GENERAL DOT PRODUCT IMPLEMENTATION ###
0.0ms
0.0ms
可以了
变量名字不要跟模块名字一样