7种检测Python程序运行时间、CPU和内存占用的方法

7种检测Python程序运行时间、CPU和内存占用的方法,第1张

1. 使用装饰器来衡量函数执行时间

有一个简单方法,那就是定义一个装饰器来测量函数的执行时间,并输出结果:

import time

from functoolsimport wraps

import random

def fn_timer(function):

  @wraps(function)

  def function_timer(*args, **kwargs):

      t0= time.time()

      result= function(*args, **kwargs)

      t1= time.time()

      print("Total time running %s: %s seconds" %

          (function.__name__, str(t1- t0))

)

      return result

return function_timer

@fn_timer

def random_sort(n):

  return sorted([random.random() for i in range(n)])

if __name__== "__main__":

  random_sort(2000000)

输出:Total time running random_sort: 0.6598007678985596 seconds

使用方式的话,就是在要监控的函数定义上面加上 @fn_timer 就行了

或者

# 可监控程序运行时间

import time

import random

def clock(func):

    def wrapper(*args, **kwargs):

        start_time= time.time()

        result= func(*args, **kwargs)

        end_time= time.time()

        print("共耗时: %s秒" % round(end_time- start_time, 5))

        return result

return wrapper

@clock

def random_sort(n):

  return sorted([random.random() for i in range(n)])

if __name__== "__main__":

  random_sort(2000000)

输出结果:共耗时: 0.65634秒

2. 使用timeit模块

另一种方法是使用timeit模块,用来计算平均时间消耗。

执行下面的脚本可以运行该模块。

这里的timing_functions是Python脚本文件名称。

在输出的末尾,可以看到以下结果:4 loops, best of 5: 2.08 sec per loop

这表示测试了4次,平均每次测试重复5次,最好的测试结果是2.08秒。

如果不指定测试或重复次数,默认值为10次测试,每次重复5次。

3. 使用Unix系统中的time命令

然而,装饰器和timeit都是基于Python的。在外部环境测试Python时,unix time实用工具就非常有用。

运行time实用工具:

输出结果为:

Total time running random_sort: 1.3931210041 seconds

real 1.49

user 1.40

sys 0.08

第一行来自预定义的装饰器,其他三行为:

    real表示的是执行脚本的总时间

    user表示的是执行脚本消耗的CPU时间。

    sys表示的是执行内核函数消耗的时间。

注意:根据维基百科的定义,内核是一个计算机程序,用来管理软件的输入输出,并将其翻译成CPU和其他计算机中的电子设备能够执行的数据处理指令。

因此,Real执行时间和User+Sys执行时间的差就是消耗在输入/输出和系统执行其他任务时消耗的时间。

4. 使用cProfile模块

5. 使用line_profiler模块

6. 使用memory_profiler模块

7. 使用guppy包

python 计算程序运行时间:

6.760052s

一、import time

二、start =time.clock()

三、#执行程序,比如计算1到100的和。

sum=0

for i in range(1,101):

sum=sum+i

print(sum )

四、end = time.clock()

print('Running time: %s Seconds'%(end-start))#其中end-start就是程序运行的时间,单位是秒。

五、

#全部程序如下

import time

start =time.clock()

sum=0

for i in range(1,101):

sum=sum+i

print(sum )

end = time.clock()

print('Running time: %s Seconds'%(end-start))

#输出结果

1、问题:

用python计算昨天,今天,明天的日期是这个格式么?Python2.7(r27:82525,Jul42010,09:01:59)[MSCv.150032bit(Intel)]onwin32Type&防抓取,突袭网提供内容,请查看原文

给定你两个日期,如何计算这两个日期之间间隔几天,几个星期,几个月,几年?

为什么Python适合科学计算?毫不夸张的说,你用python开发程序只要fortran的1/10时间。4.其他。它丰富而且统一,不像C++的库那么杂(好比linux的各种发行版),python学好n防抓取,突袭网提供内容,请查看原文

2、解决方法:

我有个问题想请教下,如何用python计算出某目录中所有文件存...1234567891011import osimport datetime path =&n防抓取,突袭网提供内容,请查看原文。

标准模块datetime和第三方包dateutil(特别是dateutil的rrule.count方法)能非常简单迅速的帮你解决这个问题。

Python构造日期对象和计算日期间天数差的问题python时间模块time,日期模块datetime,格式化用strftime()>>>importdatetime>>防抓取,突袭网提供内容,请查看原文。

from dateutil import rrule import datetime def weeks_between(start_date, end_date): weeks = rrule.rrule(rrule.WEEKLY, dtstart=start_date, until=end_date) return weeks.count( )

Python构造日期对象和计算日期间天数差的问题python时间模块time,日期模块datetime,格式化用strftime()&gt&gt&gtimportdatetime&gt&gt&gthelp(datetime)查看2009年5月31日和2009...防抓取,突袭网提供内容,请查看原文。

rrule方法允许你根据日期(DAILY),星期(WEEKLY),年(YEARLY)来设置尺度计算。下面用一段代码来测试一下:

pytho将txt文件转换为列表问:想把这些带空格的文字转化为python中列表,就是['大数据','和’,......]...答:importrecontent="大数据和社会"datas=re.s防抓取,突袭网提供内容,请查看原文。

if _ _name_ _=='_ _main_ _': starts = [datetime.date(2005, 01, 04), datetime.date(2005, 01, 03)] end = datetime.date(2005, 01, 10) for s in starts: days = rrule.rrule(rrule.DAILY, dtstart=s, until=end).count( ) print "%d days shows as %d weeks "% (days, weeks_between(s, end))

pytho怎么安装tensor答:easy_install或者pip都可以,要看你这个tensor是啥时候的东西了,应该pip能解决!你在python的安装目录下找pip,之后放到path里面去,之后运行pip--help去看详细的命令介绍,很简单的PS:如果在windows下,python包安装会很费劲,不是少了...防抓取,突袭网提供内容,请查看原文。

将输出这样的结果:

初学Pytho2.7关于整数相加的问题!问:#-*-coding:utf-8-*-sum=0forxin【1,2,3,4,5,6,7,8,9,10】:...答:所说所有的变量都是对象。对象在pytho防抓取,突袭网提供内容,请查看原文。

7 days shows as 1 weeks

如何用pytho写rhino文件答:1、首先下载MAC版的64位Eclipse,然后解压缩。2、下载Python。MAC自带的是的python版本比较老,所以去下个新版本,下载后安装,dmg的pyth防抓取,突袭网提供内容,请查看原文。

8 days shows as 2 weeks

为什么python中>>>print可以运行,而>>>print"ilo...答:为什么python中>>>print可以运行,而>>防抓取,突袭网提供内容,请查看原文。

Rrule计算是以整数计算的,它不会返回0.5星期之类的结果,所以8天会被算为两个星期。

pytho安装路径错误怎么卸载问:python安装时路径写错,忘记这个电脑没没E盘,安装失败,卸载时总报错,...答:可以重启一下你的电脑然后安装电脑管家在电脑上通过工具箱的软件管理,自动卸载该软件即防抓取,突袭网提供内容,请查看原文。

当然你可以不必定义一个尺寸,直接一句return rrule.rrule(rrule.WEEKLY, dtstart=start_date, until=end_date).count( )就可以得到结果。

pytho编写脚本用于什么测试答:PY可以实现很多东西的自动化啊主要可以写一些脚本帮助解决一些重复性劳作以及解决程序的一些自动化防抓取,突袭网提供内容,请查看原文。

希望本文所述对大家的Python程序设计有所帮助。

通过代码实现。

具体代码。start=time。clock()run_fun()end=time。clock()printend-start这种算法只计算了程序运行的CPU时间。

我们知道为了提高代码的运行速度,我们需要对书写的python代码进行性能测试,而代码性能的高低的直接反馈是电脑运行代码所需要的时间。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8068976.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存