在python中输出一次时间
我试图让程序输出完成fib(n)所需的时间,但在计算过程中,它会连续发布几分钟的时间。如何让程序只输出一次时间。如果我的程序:在python中输出一次时间,python,python-3.x,Python,Python 3.x,我试图让程序输出完成fib(n)所需的时间,但在计算过程中,它会连续发布几分钟的时间。如何让程序只输出一次时间。如果我的程序: import time def fib(n): if n <= 1: return 1 else: start_time = time.time() answer = fib(n-1) + fib(n-2) end_time = time.time() total_t
import time
def fib(n):
if n <= 1:
return 1
else:
start_time = time.time()
answer = fib(n-1) + fib(n-2)
end_time = time.time()
total_time = end_time - start_time
print(total_time)
return answer
导入时间
def纤维(n):
如果n因为您的函数是递归的,那么每个调用都会打印出自己的时间。如果您想知道函数花费了多少时间,我建议将对fib
的主调用包装在时间语句中,而不是将计时放在实际函数代码中。与其将计算时间的代码放在fib()
函数中,不如将其放在函数外部,如下所示:
import time
def fib(n):
if n <= 1:
return 1
else:
answer = fib(n-1) + fib(n-2)
return answer
#Place it all here
start_time = time.time()
fib(90) #Or some other number
end_time = time.time()
total_time = end_time - start_time
print(total_time)
导入时间
def纤维(n):
如果你用我写的计时程序
#!python3
import timeit
from os import system
system('cls')
# % % % % % % % % % % % % % % % % %
# times the code 100 times
runs = 100
totalTime = 0.0; average = 0.0
testTimes = []
for i in range(runs):
startTimer = timeit.default_timer()
# % % % % % % % % % % % % % % % %
# >>>>> code to be tested goes here <<<<<
def fib(n):
if n <= 1:
return 1
else:
answer = fib(n - 1) + fib(n - 2)
return answer
r = fib(26)
print('fib result is:', r)
# % % % % % % % % % % % % % % % %
endTimer = timeit.default_timer()
timeInterval = endTimer - startTimer
testTimes.append(timeInterval)
totalTime += timeInterval
print('\n', '{} {:.4f} {}'.format("This run's time is", timeInterval,
'seconds' + '\n'))
# print the results
print('{} {:.4f} {}'.format(' Total time:', totalTime, 'seconds'))
print('{} {:.4f} {}'.format('Shortest time:', min(testTimes), 'seconds'))
print('{} {:.4f} {}'.format(' Longest time:', max(testTimes), 'seconds'))
print('{} {:.4f} {}'.format(' Average time:', (totalTime / runs), 'seconds'))
#!蟒蛇3
导入时间信息
从操作系统导入系统
系统('cls')
# % % % % % % % % % % % % % % % % %
#将代码乘以100次
运行次数=100
总时间=0.0;平均值=0.0
测试时间=[]
对于范围内的i(运行):
startTimer=timeit.default\u timer()
# % % % % % % % % % % % % % % % %
#>>>>>>要测试的代码在这里正如其他人所指出的,要对递归函数计时,请将计时放在函数调用周围,而不是函数中。这里有一些额外的代码来计算时间序列的前30个数
import time
import numpy as np
def fib(n):
if n <= 1:
answer = 1
else:
answer = fib(n-1) + fib(n-2)
return answer
for i in np.arange(1,30):
start = time.time()
f = fib(i)
end = time.time()
total = end - start
print(i, fib(i), total)
导入时间
将numpy作为np导入
def纤维(n):
如果n您的代码不完整–它不会在任何地方调用函数。随着时间在递归函数中打印出来,这就是您得到的结果。为了避免这种情况,请将它放在函数之外,放在这里没有显示的代码中。