在python中输出一次时间

在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

我试图让程序输出完成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_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您的代码不完整–它不会在任何地方调用函数。随着时间在递归函数中打印出来,这就是您得到的结果。为了避免这种情况,请将它放在函数之外,放在这里没有显示的代码中。