首页 > 编程语言 >python应用耗时分析

python应用耗时分析

时间:2023-08-26 10:44:37浏览次数:67  
标签:timeit python fib 耗时 user 应用 time print CPU

Linux time command

https://linuxize.com/post/linux-time-command/

粗略分析整个程序的耗时情况。

 

time wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.9.tar.xz

What will be printed as an output depends on the version of the time command you’re using:

# Bash
real	0m33.961s
user	0m0.340s
sys	0m0.940s

# Zsh
0.34s user 0.94s system 4% cpu 33.961 total

# GNU time (sh)
0.34user 0.94system 0:33.96elapsed 4%CPU (0avgtext+0avgdata 6060maxresident)k
0inputs+201456outputs (0major+315minor)pagefaults 0swaps
  • real or total or elapsed (wall clock time) is the time from start to finish of the call. It is the time from the moment you hit the Enter key until the moment the wget command is completed.
  • user - amount of CPU time spent in user mode.
  • system or sys - amount of CPU time spent in kernel mode.

 

Python Inner Method

https://realpython.com/python-profiling/#timeit-benchmark-short-code-snippets

time: Measure the Execution Time

使用time模块,

time.perf_counter() 获取程序经历时间

time.process_time() 获取CPU处理时间

 

好处: 对可疑代码做定制测量。

import time

def sleeper():
    time.sleep(1.75)


def spinlock():
    for _ in range(100_000_000):
        pass


for function in sleeper, spinlock:
    t1 = time.perf_counter(), time.process_time()
    function()
    t2 = time.perf_counter(), time.process_time()
    print(f"{function.__name__}()")
    print(f" Real time: {t2[0] - t1[0]:.2f} seconds")
    print(f" CPU time: {t2[1] - t1[1]:.2f} seconds")
    print()

 

timeit: Benchmark Short Code Snippets

对可疑函数做定制测量,

与time模块相比,不用手写测时语句。

from timeit import timeit

def fib(n):
    return n if n < 2 else fib(n - 2) + fib(n - 1)


iterations = 100
total_time = timeit("fib(30)", number=iterations, globals=globals())

f"Average time is {total_time / iterations:.2f} seconds"

 

cProfile: Collect Detailed Runtime Statistics

可以统计每个函数的调用次数,单次耗时,总耗时。

from cProfile import Profile
from pstats import SortKey, Stats

def fib(n):
    return n if n < 2 else fib(n - 2) + fib(n - 1)


with Profile() as profile:
    print(f"{fib(35) = }")
    (
        Stats(profile)
        .strip_dirs()
        .sort_stats(SortKey.CALLS)
        .print_stats()
    )

 

Profile参考

https://docs.python.org/3/library/profile.html


 

标签:timeit,python,fib,耗时,user,应用,time,print,CPU
From: https://www.cnblogs.com/lightsong/p/17658463.html

相关文章

  • 【8月摸鱼计划】Python GUI
    总结了一下Python下的图形界面GUI工具,暂时能找到的资料就这么多,后续会补充推荐学习资料。图形界面的定义图形界面图形用户界面(GraphicalUserInterface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。图形用户界面是一种人与计算机通信的界面显示格式,允许用......
  • 无涯教程-Python - 网络编程
    本章将使您对网络-Socket编程中最著名的概念有所了解。Socket是双向通信通道的端点。Socket可以在一个进程内,同一台机器上的进程之间或不同大陆上的进程之间进行通信。Socket可以在许多不同的通道类型上实现:Unix域Socket,TCP,UDP等。socket库提供用于处理常见传输的特定类以......
  • 用Python制作一个PDF转Word工具
    工具:Python3.9.13,VSCode1.73.1,pdf2docx0.5.6,tkinter,Win10HomePDF文件不易编辑,想要编辑需要转成Word,但网上的工具很多要充VIP,所以今天我们就来做个PDF转Word工具。首先先安装第三方库:pipinstalltkinter导入库:#coding=utf-8importosimporttkinterfrompdf2docximport......
  • 【873】Python读取NetCDF中的scale_factor和add_offset
    参考:python中scale的用法_在netCDF4和Python中使用scale_factor和add_offset的示例?参考代码:importnetCDF4asncdir_path="./2m_temperature/03_TIFF/"files=os.listdir(dir_path)files=sorted(files)forfileinfiles:iffile.find('.tiff')<......
  • Python基础教程06 - 循环
    循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。for循环for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n次。基本构造是for元素in序列:   statement举例来说,我们编辑一个叫forDemo......
  • 无涯教程-Python - 正则表达示
    正则表达式是特殊的字符序列,可使用模式中保留的特殊语法来帮助您匹配或查找其他字符串或字符串集。Python模块re提供对Python中类似Perl的正则表达式的全面支持。如果在编译或使用正则表达式时发生错误,则re模块会引发异常re.error。Match函数此函数尝试使用可选的标志将RE......
  • 分享一个批量转换某个目录下的所有ppt->pdf的Python代码
    大家好,我是皮皮。一、前言前几天在Python最强王者群【Python小小小白】分享了一份Python自动化办公的代码,可以批量转换某个目录下的所有ppt->pdf,非常强大。二、实现过程在正式跑代码之后,你可能需要按照对应的库,不然会报错。代码运行之后,本地会出现下面的UI界面,选择PPT文件......
  • 中山大学开源Diffusion模型统一代码框架,推动AIGC规模化应用
    前言 近年来,基于扩散模型(DiffusionModels)的图像生成模型层出不穷,展现出令人惊艳的生成效果。然而,现有相关研究模型代码框架存在过度碎片化的问题,缺乏统一的框架体系,导致出现「迁移难」、「门槛高」、「质量差」的代码实现难题。为此,中山大学人机物智能融合实验室(HCPLab)构建了H......
  • 学会Python Requests库+Cookies模拟自动登录!
    importrequestsurl="https://my.cheshi.com/user/"headers={"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_15_7)AppleWebKit/537.36(KHTML,likeGecko)Chrome/116.0.0.0Safari/537.36"}res=requests.get(......
  • python网络编程
    1.套接字套接字(Socket)是实现网络编程进行数据传输的一种技术手段,网络上各种各样的网络服务大多都是基于Socket来完成通信的。socket是传输层提供给应用层的编程接口。所以,套接字socket编程分为TCP与UDP两类。在python中,通过Python套接字编程模块:importsocket提供socket......