python - 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)
不起作用。
解决方案
首先,您对变量和函数的大写违反了约定。虽然不是语法错误,但它使 Python 程序员很难遵循您的代码。
其次,你得到的结果是有意义的。在现代计算机上进行一次搜索迭代只需要很少的时间。如果您的打印结果为 形式1.23456e-05
,那么这是一个有效数字,非常小,以至于默认表示转换为科学记数法。
为 加上一个值HMT
,从 100000 开始,看看输出什么。
推荐阅读
- c# - 将日期时间转换为日期时间?(零合并?)
- r - 有什么方法可以替换 r 中的 for 循环
- python - 如何修改我当前的二叉搜索树以创建一棵空树?
- python - Pandas 以奇怪的格式返回数据(Int64、Float64)
- ruby-on-rails - 如何在使用 jQuery Datepicker 在 Ruby on Rails 应用程序中发送到服务器之前将时间转换为 UTC
- angular - 在角度材料中选择所有子复选框时,不选中标题复选框
- css - 图像的 Ionic/Angular CSS 问题
- sql-server - 基于日期创建表 SQL
- c# - 如何在 Xamarin Forms 的 Flex Button 控件模板中处理“单击”事件?
- .net - 使用 Powershell 和 .NET 从 DynamoDB 查询数据