【利用Python module计算程序运算时间】

2023-11-16

本文简介如何利用Python module来计算程序运算时间

为什么要计算程序的运行时间

编写程序时,为了比较各种算法或优化算法,需要计算每个算法或重要代码段的运行时间,以去衡量算法的性能或作为代码优化的基准。
比如在定位系统中,UI需要实时地显示程序的计算结果;运行时间过长则会导致高延迟的UI显示,造成信息传达不准确、客户体验差的问题。


方法一:time module

Python有一个名为time的模块来处理与时间有关的任务。
time()函数返回自纪元以来的秒数。
对于Unix系统,1970年1月1日,00:00:00 UTC是纪元(时间开始的点)。

import time
seconds = time.time() #调用time module里面的time()函数
print("Seconds since epoch =", seconds)	

参考资料:Python time Module


使用time module计算程序的运行时间:

import time
starttime = time.time() 

run = 0 
for i in range(1, 5000):
    for j in range(1, 5000):
        run += i + j

print(f"The result is {run}")

endtime = time.time() 
#跑完程序后的时间-跑程序前的时间,结果保留两位浮数点
print(f"It took {endtime-starttime:.2f} seconds to compute") 

返回结果:

time_result


方法二:timeit module

使用timeit module计算程序的运行时间:

from timeit import timeit #
'''只import timeit会报错
返回 *TypeError: 'module' object is not callable*
原因 *混淆了类名(class)和模块名(module)。
问题出在导入行,你正在导入一个module,而不是一个class;但是module和class有相同的名字。*
'''

def run():
    run = 0
    for i in range(1, 5000):
        for j in range(1, 5000):
            run += i + j
    return run

# timeit(调用函数run(),运行环境,number=运行次数)
# result = timeit('run()', setup='from __main__ import run', number=1)
result = timeit(run, number=1)
print(f"It took {result:.2f} seconds to compute")

返回结果:

请添加图片描述


持续学习,欢迎大家留言讨论,谢谢。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【利用Python module计算程序运算时间】 的相关文章

  • Pygame读取MIDI输入

    我参考了Pygame MIDI 文档 https www pygame org docs ref midi html and 这段代码 https stackoverflow com questions 62983509 pygame mi
  • 打印 scrapy 请求的“响应”

    我正在尝试学习 scrapy 在遵循教程的同时 我正在尝试进行细微的调整 我想简单地从请求中获取响应内容 然后我会将响应传递到教程代码中 但我无法发出请求并获取响应内容 建议就好 from scrapy http import Respon
  • 为什么我不能导入 geopandas?

    我唯一的代码行是 import geopandas 它给了我错误 OSError Could not find libspatialindex c library file 以前有人遇到过这个吗 我的脚本运行得很好 直到出现此错误 请注意
  • 如何使用pycaffe重构caffe网络

    我想要的是 加载网络后 我将分解一些特定的图层并保存新的网络 例如 原网 数据 gt conv1 gt conv2 gt fc1 gt fc2 gt softmax New net 数据 gt conv1 1 gt conv1 2 gt c
  • 如何在 Ubuntu 上安装 Python 模块

    我刚刚用Python写了一个函数 然后 我想将其做成模块并安装在我的 Ubuntu 11 04 上 这就是我所做的 创建 setup py 和 function py 文件 使用 Python2 7 setup py sdist 构建分发文
  • 如何更改充当按钮的范围的文本

    我正在为自定义 Web 应用程序编写自动化测试 我遇到了无法更改跨度文本的问题 我尝试过使用 driver execute script 但没有运气 如果我更好地了解 javascript 这确实会有帮助 据我所知 您无法单击跨度 并且列表
  • 如何将条目中的部分文本加粗并更改其背景颜色?

    我正在创建一个基于 Tkinter 的 GUI 它有一个 Entry 小部件 我想将其文本的一部分加粗并更改其背景颜色 但我不知道我该怎么做 如果我使用文本小部件 我可以只使用标签 但看起来它们不能与条目小部件一起使用 此代码使用文本小部件
  • NLTK、搭配问题:需要解包的值太多(预期为 2)

    我尝试使用 NLTK 检索搭配 但出现错误 我使用内置的古腾堡语料库 I wrote alice nltk corpus gutenberg fileids 7 al nltk corpus gutenberg words alice al
  • 使用正则表达式解析 Snort 警报文件

    我正在尝试使用 Python 中的正则表达式从 snort 警报文件中解析出源 目标 IP 和端口 和时间戳 示例如下 03 09 14 10 43 323717 1 2008015 9 ET MALWARE User Agent Win9
  • python ttk treeview:如何选择并设置焦点在一行上?

    我有一个 ttk Treeview 小部件 其中包含一些数据行 如何设置焦点并选择 突出显示 指定项目 tree focus set 什么也没做 tree selection set 0 抱怨 尽管小部件明显填充了超过零个项目 但未找到项目
  • VSCode pytest 测试发现失败

    Pytest 测试发现失败 用户界面指出 Test discovery error please check the configuration settings for the tests 输出窗口显示 Test Discovery fa
  • 使用 genfromtxt 导入 numpy 中缺失值的 csv 数据

    我有一个 csv 文件 看起来像这样 实际文件有更多的列和行 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 假设文件的名称是info csv如果我尝试使用导入它 data numpy genfromtxt i
  • Pandas:根据列名进行列的成对乘法

    我有以下数据框 gt gt gt df pd DataFrame ap1 X 1 2 3 4 as1 X 1 2 3 4 ap2 X 2 2 2 2 as2 X 3 3 3 3 gt gt gt df ap1 X as1 X ap2 X a
  • 在 Windows 上使用 IPython 笔记本时出现 500 服务器错误

    我刚刚在 Windows 7 Professional 64 位上全新安装了 IPython 笔记本 我采取的步骤是 从以下位置安装 Python 3 4 1http python org http python org gt pip in
  • Python int 太大,无法放入 SQLite

    我收到错误 OverflowError Python int 太大 无法转换为 SQLite INTEGER 来自以下代码块 该文件约25GB 因此必须分部分读取 length 6128765 Works on partitions of
  • urllib2.urlopen() 是否实际获取页面?

    当我使用 urllib2 urlopen 时 我在考虑它只是为了读取标题还是实际上带回整个网页 IE 是否真的通过 urlopen 调用或 read 调用获取 HTML 页面 handle urllib2 urlopen url html
  • 如何逐像素绘制正方形(Python,PIL)

    在空白画布上 我想使用 Pillow 逐像素绘制一个正方形 我尝试使用 img putpixel 30 60 155 155 55 绘制一个像素 但它没有执行任何操作 from PIL import Image def newImg img
  • Python模块单元测试的最佳文件结构组织?

    遗憾的是 我发现有太多方法可以在 Python 中保存单元测试 而且它们通常没有很好的文档记录 我正在寻找一种 终极 结构 它可以满足以下大部分要求 be discoverable by test frameworks including
  • PyQt 中的线程和信号问题

    我在 PyQt 中的线程之间进行通信时遇到一些问题 我使用信号在两个线程 发送者和监听者 之间进行通信 发送者发送消息 期望被监听者接收 但是 没有收到任何消息 谁能建议可能出了什么问题 我确信这一定很简单 但我已经环顾了几个小时但没有发现
  • 使用“pythonw”(而不是“python”)运行应用程序时找不到模块

    我尝试了这个最小的例子 from flask import Flask app Flask name app route def hello world return Hello World if name main app run deb

随机推荐

  • 软件构架、架构和框架的区别

    软件框架 Software Framework 介绍 面向某领域 包括业务领域 如ERP 和计算领域 如GUI 的 可复用的 半成品 软件 它实现了该领域的共性部分 并提供一系列定义良好的可变点以保证灵活性和可扩展性 可以说 软件框架是领域
  • 重新学javaweb---ServletContext

    WEB容器在启动时 它会为每个WEB应用程序都创建一个对应的ServletContext对象 它代表当前web应用 这个对象创建出来之后就一直在内存中驻留 代表当前的web应用 它可以通过我们上一篇介绍的ServletConfig对象获取
  • arm-linux-gcc char与signed char和unsigned char

    1 三者关系 1 ANSI C 提供了3种字符类型 分别是char signed char unsigned char 而不是像short int一样只有两种 int默认就是unsigned int 2 三者都占1个字节 3 signed
  • 不规则语法命名数据框tibble

    本题来自 R数据科学 第7章使用tibble实现简单数据框 4 在以下的数据框中练习如何引用不符合语法规则的变量名 a 提取名称为 1 的变量 b 绘制表示变量 1 和变量 2 关系的散点图 c 创建一个名称为 3 的新列 其值为列 2 除
  • make_heap(), pop_heap(), push_heap()用法

    对make heap pop heap push heap 的用法做个总结 make heap 生成堆 他有两个参数 也可以有三个参数 前两个参数是指向开始元素的迭代器和指向结束元素的下一个元素的迭代器 第三个参数是可选的 可以用伪函数le
  • Python爬虫——8-1.scrapy深度爬取案例—百思不得姐

    对于scrapy框架的使用 爬取数据 多次运行命令行也是比较头疼和麻烦的 这里建议Windows R键输入cmd进入命令行 切入至项目所在目录后执行scrapy shell url 命令 可以很直观的检测程序是否出错 如xpath匹配路径是
  • 蓝桥杯经验分享

    作为已经入码坑的一员 在开始接触的时候一窍不通 老师讲完之后自己再写一遍都写不出来的那种 很是沮丧 失落 后来到了大二 逐渐的找到了感觉 在学习了诸如C C java python之后 感觉诸多编程语言殊途同归 编者观点 学习编程语言入手最
  • IDEA文件右键创建New没有Create New Servlet的解决办法

    Author codepig16 interesting wtsb7 1 问题描述 创建了一个Javaweb项目但是在src中右键创建中 没有Servlet选项 如下图所示 2 解决方案 解决方案分为三步 笔者本人是在第三步有问题 估计大部
  • Qt中左侧列表与右侧窗口关联

    左边列表选项与右边窗体关联 QListWidget list new QListWidget this list gt insertItem 0 tr Window1 list gt insertItem 1 tr Window2 QLab
  • C++ 多线程学习(二) 互斥锁std::mutex

    在多线程中经常会遇到多个线程同时修改同一个变量的情况 这个时候如果不对线程进行一定约束 很可能会导致意想不到的结果 例如有两个线程1和线程2 线程2的输入是线程1的结果 很显然如果在主线程中同时开启了线程1和线程2 它们是同时运行的 会直接
  • 华为机考108题(c++)(52-61)

    HJ52 计算字符串的编辑距离 描述 Levenshtein 距离 又称编辑距离 指的是两个字符串之间 由一个转换成另一个所需的最少编辑操作次数 许可的编辑操作包括将一个字符替换成另一个字符 插入一个字符 删除一个字符 编辑距离的算法是首先
  • 顺序表详解 —— 初始化、销毁、打印、增加、删除、查找、修改

    文章目录 顺序表介绍 初始化顺序表 销毁顺序表 打印顺序表 增加数据 头插 尾插 指定下标位置插入 删除数据 头删 尾删 指定下标位置删除 查找数据 修改数据 顺序表介绍 顺序表是在计算机内存中以数组的形式保存的线性表 线性表的顺序存储是指
  • Spark基础知识(个人总结)

    声明 1 本文为我的个人复习总结 并非那种从零基础开始普及知识 内容详细全面 言辞官方的文章 2 由于是个人总结 所以用最精简的话语来写文章 3 若有错误不当之处 请指出 一 Spark概述 Spark模块 Core SQL Streami
  • js字符串转数字

    1 通过Number 函数传入一个合法的字符串参数 可以把字符串转换成一个十进制整数 十进制字符串可以带小数 其它进制我试过都不能有小数 否则返回NaN 11 其实也是调用的Number 11 进行减 乘 除运算时 字符串的自动转换也是调用
  • Redis数据类型常用命令

    Redis数据类型常用命令 Redis Key String 字符串 List 列表 Set 集合 Hash 哈希 Zset 有序集合 三种特殊数据类型 Geospatial地理位置 Hyperloglog 基数 Bitmap 位图 位存储
  • R语言-ggplot2柱状堆叠图

    导入数据 load D R futures user 2 dat 提取需要画图的数据 a futures user 2 c 1 2 5 对部分错误的数据进行修改 a province which a province 广西桂林 lt 广西
  • Node 16版本和 node-sass 兼容性问题

    我电脑上的node版本是16 13 1 运行刚克隆下来的项目时 npm install 报错 gyp err 百度之后确定是node sass版本兼容性问题 项目的package json文件版本如下 devDependencies nod
  • str.charAt(i);的作用

    在java中 有 String str leetcode 则 str charAt 0 为 l str charAt 1 为 e str charAt 2 为 e
  • 拉格朗日插值

    直接上公式 简单的讲 这个玩意就是在给你若干个 f xi yi 的结果 算出f k 的结果 最朴素的实现方法 验证下这个公式的结果 include
  • 【利用Python module计算程序运算时间】

    本文简介如何利用Python module来计算程序运算时间 内容概览 为什么要计算程序的运行时间 方法一 time module 方法二 timeit module 为什么要计算程序的运行时间 编写程序时 为了比较各种算法或优化算法 需要