Python性能分析,Python可是无所不能的!

Python脚本性能分析方法 在Python编程中,尤其是处理复杂任务或参与编程竞赛(如Project Euler)时,了解程序的运行时间至关重要。有时Python代码的性能可能不理想,需要找出性能瓶颈并进行优化。性能分析(Profiling)是一种有效的方法,它可以帮助我们确定程序中哪些部分运行缓慢,从而有针对性地进行优化。 阅读详情

当我们开始精通编程语言时,我们不仅希望实现最终目标,而且希望使我们的程序高效。

在这个教程中,我们将学习一些Ipython的命令,这些命令可以帮助我们对Python代码进行时间分析。

注意,在本教程中,我建议使用Anaconda。

1.分析一行代码

要检查一行python代码的执行时间,请使用%timeit。下面是一个简单的例子来了解它的工作原理:

#### magics命令%timeit的简单用法
%timeit [num for num in range(20)]

#### 输出
1.08 µs ± 43 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)
复制代码

主要注意事项:

  • 在要分析的代码行之前使用%timeit

  • 它返回代码运行的平均值和标准偏差。在上面的示例中,执行了7次,每次执行对该代码循环100万次(默认行为)。这需要平均1.08微秒和43纳秒的标准偏差。

  • 在调用magic命令时,可以自定义运行和循环的数量。示例如下:

    在%timeit magic命令中自定义运行和循环数

    %timeit -r5 -n100 [num for num in range(20)]

    1.01 µs ± 5.75 ns per loop (mean ± std. dev. of 5 runs, 100 loops each)

使用命令选项-r和-n,分别表示执行次数和循环次数,我们将时间配置文件操作定制为执行5次和循环100次。

2.分析多行代码

本节向前迈进了一步,并解释了如何分析完整的代码块。通过对%timeit magic命令进行一个小的修改,将单百分比(%)替换为双百分比(%%),就可以分析一个完整的代码块。以下为示例演示,供参考:

#### 使用timeblock%%代码分析
%%timeit -r5 -n1000
for i in range(10):
    n = i**2
    m = i**3
    o = abs(i)

#### 输出
10.5 µs ± 226 ns per loop (mean ± std. dev. of 5 runs, 1000 loops each)
复制代码

可以观察到for循环的平均执行时间为10.5微秒。请注意,命令选项-r和-n分别用于控制执行次数和循环次数。

3.代码块中的每一行代码进行时间分析

到目前为止,我们只在分析一行代码或代码块时查看摘要统计信息。如果我们想评估代码块中每一行代码的性能呢?使用Line_profiler 。

Line_profiler 包可用于对任何函数执行逐行分析。要使用line_profiler软件包,请执行以下步骤:

  • 安装—Line_profiler 包可以通过简单的调用pip或conda Install来安装。如果使用的是针对Python的anaconda发行版,建议使用conda安装

    安装line_profiler软件包

    conda install line_profiler

加载扩展—一旦安装,你可以使用IPython来加载line_profiler:

#### 加载line_profiler的Ipython扩展
%load_ext line_profiler1
复制代码

时间分析函数—加载后,使用以下语法对任何预定义函数进行时间分析

%lprun -f function_name_only function_call_with_arguments
复制代码

语法细节:

  • 对line_profiler的调用以关键字%lprun开始,后跟命令选项-f
  • 命令选项之后是函数名,然后是函数调用

在本练习中,我们将定义一个接受高度(以米为单位)和重量(以磅为单位)列表的函数,并将其分别转换为厘米和千克。

#### 定义函数
def conversion(ht_mtrs, wt_lbs ):
    ht_cms = [ht*100 for ht in ht_mtrs]
    wt_kgs = [wt*.4535 for wt in wt_lbs]

#### 定义高度和重量列表:
ht = [5,5,4,7,6]
wt = [108, 120, 110, 98]

#### 使用line_profiler分析函数
%lprun -f conversion conversion(ht,wt)

---------------------------------------------------------------
#### 输出
Total time: 1.46e-05 s

File: <ipython-input-13-41e195af43a9>

Function: conversion at line 2

Line #      Hits         Time  Per Hit   % Time  Line Contents
==============================================================
     2       1        105.0    105.0     71.9      ht_cms = [ht*100 for ht in ht_mtrs]
     3       1         41.0     41.0     28.1      wt_kgs = [wt*.4535 for wt in wt_lbs]
复制代码

输出详细信息:

以14.6微秒为单位(参考第一行输出)

生成的表有6列:

  • 第1列(行#)—代码的行号(请注意,第#1行是故意从输出中省略的,因为它只是函数定义语句)
  • 第2列(命中)—调用该行的次数
  • 第3列(时间)—在代码行上花费的时间单位数(每个时间单位为14.6微秒)
  • 第4列(每次命中平均时间)—第3列除以第2列
  • 第5列(%Time)—在所花费的总时间中,花在特定代码行上的时间百分比是多少
  • 第6列(内容)—代码行的内容

你可以清楚地注意到,高度从米到厘米的转换几乎占了总时间的72%。

结束语

利用每一行代码的执行时间,我们可以部署策略来提高代码的效率。在接下来的3个教程中,我们将分享一些最佳实践来帮助你提高代码的效率。

我希望这篇教程能提供帮助,你能学到一些新东西。

原文链接:towardsdatascience.com/did-you-kno…

源码点这获取


 

Python知识点:如何使用Profile与Trace进行性能分析 Profile和TraceProfiling是测量程序各部分所花费时间的过程,以确定哪些函数或模块是性能瓶颈。Tracing涉及记录程序执行期间的事件,以便于后续分析程序的行为。 阅读详情

相关推荐

Python使用cProfile进行性能分析使用详解

在Python开发中,代码性能分析是优化和调试的重要环节。通过性能分析,可以找出程序中性能瓶颈,进而进行优化。cProfile是Python内置的性能分析工具,它可以详细地分析代码的执行时间和函数调用情况。本文将详细介绍如何使用cProfile进行代码性能分析,涵盖安装、基本用法、分析结果解读和实际应用案例。

Rocky006的博客 1374

Python性能分析技巧

作者|Ujjwal Dalmia 编译|VK 来源|Towards Data Science 当我们开始精通编程语言时,我们不仅希望实现最终目标,而且希望使我们的程序高效。 在这个教程中,我们将学习一些Ipython的命令,这些命令可以帮助我们对Python代码进行时间分析。 注意,在本教程中,我建议使用Anaconda。 1.分析一行代码 要检查一行python代码的执行时间,请使用%timeit。下面是一个简单的例子来了解它的工作原理: #### magics命令%timeit的简单用法 %timei

TensorFlowNews 2224

Pyinstrument:一款强大的 Python 代码性能分析工具,助你找到代码中耗时最多的部分

Pyinstrument 是一个功能强大、易于使用、灵活多样的 Python 代码性能分析工具,可以帮助你快速定位代码瓶颈,提升程序效率。无论是命令行使用、Python API,还是 Web 框架集成,Pyinstrument 都能满足你的不同需求。项目地址:https://github.com/joerick/pyinstrument。

weixin_53707653的博客 1769

ipython运行_ipython 运行 %lprun 报错

环境描述:1.win7 x642.python 2.7 323.ipython 5.2.2问题描述:In [9]: %lprunERROR:root:Line magic function `%lprun` not found.解决步骤:1.安装line_profiler安装:python setup.py install2.修改ipython 配置文件C:\Users\hunk206\.ipyt...

weixin_39525865的博客 327

用FPGA驱动WS2812B点阵,手把手教你实现动态文字显示(附完整Verilog代码)

本文详细介绍了如何使用FPGA驱动WS2812B点阵实现动态文字显示,包括硬件连接、Verilog代码实现和动态效果设计。通过精确的时序控制和数据处理,读者可以掌握FPGA与WS2812B的交互技术,并实现炫酷的显示效果。附完整Verilog代码,适合硬件爱好者和工程师参考实践。

weixin_30482383的博客 669

一文告诉你:如何在trae中编译运行STM32程序,并让AI帮你修改代码

本文详细介绍了如何将STM32程序从Keil迁移到国产免费工具Trae,并利用AI进行代码修改的全过程。

水滴爬呀爬 4881

Python数据科学手册(笔记一)

所有代码运行在jupyter notebook中 1.9.3 利用%lprun进行逐行分析 用 %prun 对代码中的每个函数进行分析非常有用,但有时逐行代码分析报告更方便。首先利用 Python 的包管理工具 pip 安 装 line_profiler 包: pip install line_profiler 接下来可以 line_profiler 包提供的 IPython 扩展: In [1]: %load_ext line_profiler In [2]: def sum_of_lists(N)

爱听许嵩歌的博客 1012

F460 CLK配置功能模块说明

F460CLK配置功能模块说明 目录 F460CLK配置功能模块说明 CLK配置: 1. DDL_ICG——初始化配置 2. DDL_UTILITY——基础功能函数 3.DDL_PRINT-待细化 4.DDL_ADC 5.DDL_AES——AES 加解密算法处理器 6.DDL_CAN 7. DDL_CLK 8. DDL_CMP——电压比较器 9. DDL_CRC 10. DDL_DCU——数据计算单元 11. DDL_DMAC——DMA 控制器 ...

childboy的博客 2456

python代码性能分析_Python性能分析

Python的高效体现在它的开发效率,完善的类库支持,特别是这几年在数据科学中的流行,使得Python开始在各种语言排行榜独占鳌头,但是Python代码运行效率低这一点也一直被诟病,要想让Python高效运行,掌握一套性能分析的方法和工具,就显得很重要。一般通过profiling找到代码瓶颈,然后针对这个瓶颈代码进行优化,从而可以到达事半功倍的效果,即用最少的工作量来获得最大的性能的提升,这在任何...

weixin_39759107的博客 297

PINN驱动的3D不可压缩流场重建——从稀疏2D2C观测到完整物理场反演——含源码实现

多尺度融合策略在此发挥作用:高分辨率的2D2C数据用于约束平面内的精细结构,而低分辨率的3D3C数据提供第三维度的粗尺度信息。迁移学习架构在此发挥关键作用。这种策略在湍流封闭模型构建中尤为有效,其中RANS提供的平均流场与DNS的雷诺应力数据融合,显著提升了分离流的预测精度。在稀疏数据场景下,注意力权重根据观测数据的分布动态调整,强化数据缺失区域的物理约束,同时避免过拟合于观测点。这种机制与自适应采样的结合,实现了计算效率与重建精度的平衡,在仅保留约百分之十关键节点的情况下,仍能保持高物理一致性。

u012133341的博客 135

RT-DETR目标检测模型性能评价指标详解,涉及混淆矩阵、F1-Score、IoU、mAP、参数量、计算量等,一文打尽所有评价指标

本文主要讲解的是计算机视觉网络模型的性能评价指标,这是每一篇论文中都需要展示的内容。熟悉每一个评价指标也能够帮助我们在训练和改进模型过程中,更好的观察模型的变化效果。

Limiiiing的博客 3358

Python性能分析利器pyinstrument讲解

一、前言 程序的性能也是非常关键的指标,很多时候你的代码跑的快,更能够体现你的技术。最近发现很多小伙伴在性能分析的过程中都是手动打印运行时间的方式来执行的: import datetime start=datetime.datetime.now() b=[i for i in range(10000000)] # 生成长度为一千万的列表 end=datetime.datetime.now() print(end-start) 文章目录一、前言二、Pyinstrument使用1. 举例2. Pyinst

曲鸟 9585

海康DS-7604N-K1/RTB固件包

【摘要】海康DS-7604N-K1/RTB萤石云设备发布V4.30.091版本升级程序(2022.09.19),仅适用于指定型号。升级前需先升级至V3.4.106基础版本,刷机会重置设备为未激活状态,需重新设置admin密码。该机型支持密码/手势登录,无密码时可通过U盘升级。注意事项:升级存在风险,需确认程序适用性;升级过程严禁断电;必须阅读压缩包内的刷机说明。此为定制机型,非必要不建议升级。(150字)

海康威视技术支持 1570

python之(19)CPU性能分析常见工具

计算机科学界的大牛Donald Knuth的一句名言:“我们应该忘掉小的效率问题,大约97%的时间:过早的优化是万恶之源。”这句话的核心思想是警告程序员不要在编程初期就过分追求代码的优化,因为那时往往还没有清晰的性能瓶颈证据,盲目优化可能会导致代码的复杂性上升,反而带来更多问题。Python性能分析,顾名思义,是指对Python程序进行性能评估,以确定代码中的瓶颈所在,进而优化程序的运行效率。性能分析不仅能帮助我们找到最耗时的部分,而且能为我们提供决策依据,让我们知道何时以及在哪里优化。

梅花香自苦寒来,宝剑锋从磨砺出。 3830

S/4HANA 迁移前的必修课:用 SCMON 找出沉睡的自定义代码

SAP S/4HANA迁移项目中,SCMON工具能有效解决历史代码评估难题。通过监控ABAP对象调用情况,SCMON可识别40-60%处于"沉睡"状态的自定义代码。配置时需注意监控周期(建议3-6个月)和数据保留期(建议1年),并配合Time Slices功能进行时段分析。工具导出的调用数据可与测试覆盖率对比,帮助决策代码迁移优先级。实际应用中需结合业务场景,建议与SUSG工具配合使用,并保持持续监控。SCMON虽不能完全替代人工判断,但其提供的客观数据能显著提升迁移决策的科学性,建议在

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 289

52、基于格的具有解密密钥暴露抗性的可撤销(分层)身份基加密方案

本文提出了首个基于格的具有解密密钥暴露抗性(DKER)的可撤销分层身份基加密(RHIBE)方案。通过引入分层密文、分层解密密钥和级别转换密钥等创新工具,克服了格结构与传统密钥重新随机化属性不匹配的难题。该方案不仅支持可扩展的密钥撤销机制,还具备密钥委托功能,为后量子密码学领域的发展提供了新的思路和方法。

efc12345678的博客 123

Python 代码性能分析全面指南

Python 代码性能分析全面指南

嗨,欢迎来到我的 优快云 博客小天地!一名深耕多年的技术发烧友。在这里,我将把日常工作中积累的宝贵经验,从复杂架构设计的精妙之处,到代码优化的实战技巧,毫无保留地分享给大家。 957

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

教你3个python「性能分析」工具,再也不用自己计算函数耗时了

帮你快速定位性能瓶颈。

人工智能算法与工程实践 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[Python学习笔记]Python 性能分析

本次使用 Python 的性能分析工具对脚本进行分析,找到优化点。首先介绍两个工具 cProfile 和 snakeviz 对程序性能进行定性分析。 cProfile 是 Python 自带的性能分析模块,不需要额外安装,可以统计程序中函数的调用次数和时间。以上命令会运行,对每个函数的调用进行统计,并记录到 log.profile 文件中,方便分析。SnakeViz是一个Python模块,用于可视化Python程序的性能分析结果。

DBA大董的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python性能分析与优化pdf_python性能分析与优化pdf

对于Python程序员来说,仅仅知道如何写代码是不够的,还要能够充分利用关键代码的处理能力。如果你想写出优雅、漂亮、高性能的Python代码,应该看看这本书!本次小编给大家带来一本书,对于想进一步提升编程能力的Python程序员来说,这是一本非常值得购买的书。python性能分析与优化pdf是一个内容十分丰富的主题,而这本书深入探讨了Python代码的性能关键点。本书呢将讨论如何对Python代码...

weixin_39738380的博客 290

Python性能分析工具Line_profiler

这是一个目录介绍安装使用方法1 :生成一个Line_profiler类(推荐)简单版本多函数调用方法2:使用装饰器@profile读取lprof 文件 介绍 profile和line_profiler两个模块都是性能分析工具。有时候需要找到代码中运行速度较慢处或瓶颈,可以通过这两模块实现,而不再使用time计时。 line_profiler模块可以记录每行代码的运行时间和耗时百分比。1 安装 我是使用的anaconda安装的,所以直接pip install line_profiler即可。 使用 方法1

weixin_44613728的博客 1万+

python代码性能分析

性能测试分析站在项目层面是一个很庞大的话题,以前为测试工程师,关注的是性能工具的使用,以及用户维度的性能[1];作为开发工程师,每个功能都是由一个个函数/方法组成,我们去分析每个函数/方法,甚至是每行代码的耗时,才能更好的进行代码层面的性能优化。这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

YLF123456789000的博客 1053

python性能分析之 profile 模块 记录

内存占用分析 kernprof 运行时间分析 kernprof

abc 3799

python性能分析与优化pdf_Python性能分析与优化

Python性能分析与优化是一本Python代码分析与优化指导书籍,由web程序员多格里奥编著。本书首先介绍了什么是性能分析,性能分析如何在项目开发周期中发挥作用,以及通过在项目中进行性能分析实践能够取得的效果。紧接着开始介绍分析性能所需的核心工具(性能分析器和可视化性能分析器)。然后再介绍一系列的性能优化技术,最后在配有一个具有实际意义的优化案例,可以让读者很轻松的了解并掌握书中的知识点和诀窍。...

weixin_39959349的博客 302
上一篇: Python画王者荣耀英雄能力雷达图!谁才是最强上分英雄!
下一篇: 利用selenium实现自动翻页爬取某鱼数据!你想要的都有!
pythonlaodi
博客等级 码龄6年 286粉丝 244原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值