首页 > 编程问答 >为什么 %timeit 循环次数不同?

为什么 %timeit 循环次数不同?

时间:2024-07-27 05:24:40浏览次数:10  
标签:python pandas ipython jupyter-notebook jupyter

在 Jupter Notebook 上,我试图比较两种方法查找最大值索引所花费的时间。

enter image description here

在图像中,第一个函数花费了 1000 个循环,第二个函数花费了 10000 个循环,这是循环的增加吗由于方法本身或 Jupyter 只是添加了更多循环以获得每个循环更准确的时间,即使第二个函数可能只花了 1000,是这种情况吗?


是的,你说对了。Jupyter Notebook 中的 %timeit 魔法函数旨在通过动态调整循环次数以获得尽可能可靠的计时测量结果。

%timeit 如何工作

  • 初始测量: %timeit 首先使用少量循环运行的代码。
  • 时间阈值: 它有一个内置的时间阈值(通常为几毫秒)。如果初始运行低于此阈值, %timeit 会增加循环次数并再次运行代码。
  • 目标精度: 此过程会重复进行,直到总执行时间超过阈值,从而确保计时结果足够可靠,并且不太可能受到微小性能波动的影响。

的情况

在的情况下,第二个函数(使用 enumerate 和列表推导)可能比第一个函数(使用 index 方法)效率更高。这意味着第二个函数的每次循环完成速度更快。

%timeit 检测到第二个函数的快速执行,并增加了循环次数,以获得与第一个函数类似的总执行时间,从而提高计时测量的精度。

结论

循环次数的差异并不表示第二个函数执行的循环次数实际上更多。这表明 %timeit 正在调整循环次数以获得两个函数的可靠和可比较的计时测量结果。第二个函数实际上可能快得多, %timeit 只是确保通过运行更多循环来提供准确的测量结果。

标签:python,pandas,ipython,jupyter-notebook,jupyter
From: 45374921

相关文章

  • Ebay Python SDK 仅在特定项目类别上返回错误
    我在一个项目中使用ebaySDK一段时间了。最近我尝试导入一些商品,例如手表、手机壳等...并且我使用了eBay自己通过eBay返回的英国商店页面上的类别ID他们的“get_category_suggestions”API端点,但eBay似乎有选择地决定拒绝某些项目并引发服务器错误!为了测试,我做了......
  • 使用特定的Python版本(MacOS)制作virtualenv
    我安装了brew,python3(默认和最新版本)和pip3,pyenv。TensorFlow现在不支持python3.7,所以我听说我应该制作一个独立运行3.6或更低版本的virtualenv。我安装了python3.6.7bypyenvinstall3.6.7但无法制作virtualenv-p3.6.7(mydir)因为3.6.7不在P......
  • 使用Python去除图像中的线条
    我正在尝试使用Python和cv2、numpy、skimage等从黑白图像中删除“阴影线”(如果图像中存在“阴影线”)。本质上,我的图像可以有1或2条曲线,如下例所示。但每条线都有一条1-5像素外的阴影线,需要删除。我怎样才能在Python中做到这一点?原始......
  • Python 和 OpenCV:如何裁剪半成形边界框
    我有一个为无网格表创建网格线的脚本:脚本之前:脚本之后:是否有一种简单的方法,使用OpenCV来裁剪“脚本之后”图像,使其仅包含四边边界框?示例输出:编辑:我目前正在研究一种解决方案,该解决方案可以找到垂直/水平方向的第一条/最后一条......
  • 如何将 Pandas Dataframe 过滤为整数值?
    我有一个包含字符串值的数据框列。我想过滤到具有整数的行。我可以执行以下操作来查找它是否是数字,但这也会返回浮点数。result=pd.to_numeric(df['col1'],errors='coerce').notnull()应该返回“1”不应返回“1.1”。如何过滤为整数(不包括漂浮)?可以使用......
  • 使用类型提示将 Python 转换为 Cython
    类型提示现在在Python3.5版本中可用。在规范(PEP484)中,目标(和非目标)被明确暴露:#RationaleandGoals此PEP旨在为类型注释提供标准语法,开放Python代码更容易静态分析和重构、潜在的运行时类型检查以及(也许在某些情况下)利用类型信息生成代码。......
  • 在 Python 类型提示中区分 PySpark 和 Pandas DataFrame (PyCharm)
    在PyCharm中,如果使用apyspark.sql.DataFrame代替pandas.DataFrame,类型提示似乎不会触发警告,反之亦然。例如以下代码根本不会生成任何警告:frompyspark.sqlimportDataFrameasSparkDataFramefrompandasimportDataFrameasPandasDataFramedef......
  • 如何在Python中继承类型提示?
    所以我的问题是,当我有一个A类型的类来做事情并且我使用这些函数作为subclass(B)时,它们仍然是类A的类型,并且不接受我的类B对象作为参数或作为函数签名。我的问题简化了:fromtypingimportTypeVar,Generic,CallableT=TypeVar('T'......
  • Python - 如何传递类对象的函数参数类型(打字)
    我想python3.7附带了(不确定),不仅可以将变量名传递给函数,还可以传递变量的类型。我想知道的是是否有可能传递特定类的类型。以同样的方式传递:deffoo_func(i:int)->None:pass如果我有一个类,让我们说:classfoo_class(object):pass我如何转换fo......
  • Numpy&Pandas:pandas库的安装,不同对象的建立,文件的导入和了解数据
    目录前言一、Pandas库的安装二、不同对象的建立1.Series对象的创建1.用index方法指定索引2.在创建的时候就指定索引3.使用字典的方式创建4.将一个常量与index一起传入创建5.输出值和索引2.DataFrame对象的创建1.不指定列名则以键当列名行索引为默认值2.columns指......