Python 计时需要多长时间
我正在做一个关于除数的简单代码,我想得到一个关于计算机给我答案需要多长时间的反馈 这是我的密码:Python 计时需要多长时间,python,python-3.x,Python,Python 3.x,我正在做一个关于除数的简单代码,我想得到一个关于计算机给我答案需要多长时间的反馈 这是我的密码: num=int(input('Give me a number')) listRange=list(range(1,num+1)) divisorList=[] for number in listRange: if num%number==0: divisorList.append(number) print(divisorList) 如您所见,数字越大,计算机处理所有除
num=int(input('Give me a number'))
listRange=list(range(1,num+1))
divisorList=[]
for number in listRange:
if num%number==0:
divisorList.append(number)
print(divisorList)
如您所见,数字越大,计算机处理所有除数所需的时间就越多,因此我想知道它在处理除数时花费了多少时间。如果您想以秒为单位计算时间:
from time import time
start = time()
... # code
print(time() - start)
您可以使用时间模块在循环之前和之后分别设置一个时间戳并打印差异
import time
num=int(input('Give me a number'))
listRange=list(range(1,num+1))
divisorList=[]
start = time.time() # use time.clock() if on Windows
for number in listRange:
if num%number==0:
divisorList.append(number)
end = time.time() # use time.clock() if on Windows
print(divisorList)
print("Time taken: {:06.5f}secs".format(end-start)) # Seconds
print("Time taken: {:10.5f}ms".format((end-start)*1000) # Miliseconds
您可以使用
timeit
模块:
import timeit
num=100000
listRange=list(range(1,num+1))
def function():
divisorList=[]
for number in listRange:
if num%number==0:
divisorList.append(number)
print(timeit.timeit(function, number=1))
# 0.01269146570884061
O(n)和n输入的值。但是你可以做得更好:在O(sqrt n)中,看看时间模块。你可以对这个数字进行素数分解,然后生成所有因子的组合。更奇怪的是,它远远少于一半;它是sqrt(n)。如果我在寻找以毫秒(ms)为单位的时间呢?@LFSS
time.time()
返回一个float
,因此只需将答案乘以1000即可