首页 > 解决方案 > Python 时间 Perf_Counter() 混乱

问题描述

所以,我真的很困惑,我一直在学习python,并且给了我一个练习来确定函数的性能速度,但是在完成代码后我在时间输出中收到一个错误,它是 3.215000000000856e- 06,这个值随着我每次运行程序而变化,所以你可能不会得到相同的输出。(实际上它不到一秒钟。)我浏览了视频,它解释了如何编写他们是如何做到的并更改了我编写语句的方式,现在我的代码与他们的代码相同,但变量名不同,我运行了程序并遇到了同样的问题,但是他们没有遇到这个问题,代码如下:

import time

SetContainer = {I for I in range(1002)}
ListContainer = [I for I in range(1002)]

def Search(Value, Container):

    if Value in Container:
        return True
    else:
        return False

def Function_Speed(Func, HMT = 1, **arg):
    sum = 0

    for I in range(HMT):
        start = time.perf_counter()
        print (Func(**arg))
        end = time.perf_counter()
        sum = sum + (end - start)
    return (sum, )

print (Function_Speed(Search, Value = 402,
                      Container = SetContainer))

可能的答案?:可能是我的硬件吗?不再支持我的 Python 版本(视频已经使用一年多了,我使用的是 3.6),或者我搞砸了。

(编辑:)顺便说一句,它在打印函数时确实有效,所以这个例子有效,但没有它print (Func(**arg))反而Func(**arg)不起作用。

标签: pythontime

解决方案


首先,您对变量和函数的大写违反了约定。虽然不是语法错误,但它使 Python 程序员很难遵循您的代码。

其次,你得到的结果是有意义的。在现代计算机上进行一次搜索迭代只需要很少的时间。如果您的打印结果为 形式1.23456e-05,那么这是一个有效数字,非常小,以至于默认表示转换为科学记数法。

为 加上一个值HMT,从 100000 开始,看看输出什么。


推荐阅读