用python计算代码的计算时间和内存

用python计算代码的计算时间和内存,python,Python,有人能帮我找出python代码需要多少时间和多少内存吗?用这个来计算时间: import time time_start = time.clock() #run your code time_elapsed = (time.clock() - time_start) 正如Python文档所引用的: time.clock() 在Unix上,以浮点形式返回当前处理器时间 以秒表示的点数。准确度,事实上 “处理器时间”含义的定义取决于 C函数的名称相同,但在任何情况下,这都是 用于基准测试Pyth

有人能帮我找出python代码需要多少时间和多少内存吗?

用这个来计算时间:

import time

time_start = time.clock()
#run your code
time_elapsed = (time.clock() - time_start)
正如Python文档所引用的:

time.clock()

在Unix上,以浮点形式返回当前处理器时间 以秒表示的点数。准确度,事实上 “处理器时间”含义的定义取决于 C函数的名称相同,但在任何情况下,这都是 用于基准测试Python或计时算法

在Windows上,此函数返回自 根据 Win32函数QueryPerformanceCounter()。分辨率通常是 比一微秒好

参考


用于计算内存:

import resource

resource.getrusage(resource.RUSAGE_SELF).ru_maxrss

参考

使用像guppy这样的内存分析器

>>> from guppy import hpy; h=hpy()
>>> h.heap()
Partition of a set of 48477 objects. Total size = 3265516 bytes.
Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0  25773  53  1612820  49   1612820  49 str
     1  11699  24   483960  15   2096780  64 tuple
     2    174   0   241584   7   2338364  72 dict of module
     3   3478   7   222592   7   2560956  78 types.CodeType
     4   3296   7   184576   6   2745532  84 function
     5    401   1   175112   5   2920644  89 dict of class
     6    108   0    81888   3   3002532  92 dict (no owner)
     7    114   0    79632   2   3082164  94 dict of type
     8    117   0    51336   2   3133500  96 type
     9    667   1    24012   1   3157512  97 __builtin__.wrapper_descriptor
<76 more rows. Type e.g. '_.more' to view.>
>>> h.iso(1,[],{})
Partition of a set of 3 objects. Total size = 176 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0      1  33      136  77       136  77 dict (no owner)
     1      1  33       28  16       164  93 list
     2      1  33       12   7       176 100 int
>>> x=[]
>>> h.iso(x).sp
 0: h.Root.i0_modules['__main__'].__dict__['x']
来自guppy进口hpy的
>;h=hpy()
>>>h.堆()
一组48477个对象的分区。总大小=3265516字节。
索引计数%Size%累计%Kind(类/类的目录)
0 25773 53 1612820 49 1612820 49街
116992448396015209678064元组
2 174 0 241584 7 2338364 72模块目录
3 3478 7 222592 7 2560956 78类型。代码类型
4329671845766274553284功能
5 401 1 175112 5 2920644 89课堂记录
6 108 0 81888 3 3002532 92 dict(无所有者)
7 114 0 79632 2 3082164 94类型目录
81170513362313350096型
9 667 1 24012 1 3157512 97内置包装描述符
>>>h.iso(1,[],{})
一组3个对象的分区。总大小=176字节。
索引计数%Size%累计%Kind(类/类的目录)
01 33 136 77 136 77 dict(无所有者)
1 1 33 28 16 164 93名单
2 1 33 12 7 176 100国际单位
>>>x=[]
>>>h.iso(x).sp
0:h.Root.i0_模块['''u____'].__指令['x']

有一个非常好的库,用于对代码计时。然后,您应该使用Daniel Li建议的资源包

jackedCodeTimerPy提供了非常好的报告,如

label            min          max         mean        total    run count
-------  -----------  -----------  -----------  -----------  -----------
imports  0.00283813   0.00283813   0.00283813   0.00283813             1
loop     5.96046e-06  1.50204e-05  6.71864e-06  0.000335932           50
我喜欢它给你的统计数据和定时器运行的次数

它使用起来很简单。如果我想测量for循环中代码的时间,我只需执行以下操作:

from jackedCodeTimerPY import JackedTiming
JTimer = JackedTiming()

for i in range(50):
  JTimer.start('loop')  # 'loop' is the name of the timer
  doSomethingHere = 'This is really useful!'
  JTimer.stop('loop')
print(JTimer.report())  # prints the timing report
您还可以同时运行多个计时器

JTimer.start('first timer')
JTimer.start('second timer')
do_something = 'amazing'
JTimer.stop('first timer')

do_something = 'else'
JTimer.stop('second timer')

print(JTimer.report())  # prints the timing report
回购协议中有更多的使用示例。希望这有帮助

基于,以方便剪切和粘贴,并与Python 3.x兼容:

import time
import resource 

time_start = time.perf_counter()
# insert code here ...
time_elapsed = (time.perf_counter() - time_start)
memMb=resource.getrusage(resource.RUSAGE_SELF).ru_maxrss/1024.0/1024.0
print ("%5.1f secs %5.1f MByte" % (time_elapsed,memMb))
示例:

 2.3 secs 140.8 MByte

thanx…我在windows中使用python,我认为您描述的内存计算是针对linux的??导入资源resource.getrusage(resource.RUSAGE\u SELF)。ru\u maxrsst这在python(windows)中给出了一个错误,导入资源resource.getrusage(resource.RUSAGE\u SELF).ru_maxrss
time.clock()
已去除润滑脂。使用
time.perf_counter()
time.process_time()
。有关计算使用的总内存的信息,请参阅。