7

Pythonのコードにどれくらいの時間とどれくらいのメモリが必要かを見つける方法として、誰かが私を助けることができますか?

4

4 に答える 4

15

これを使用して時間を計算します。

import time

time_start = time.clock()
#run your code
time_elapsed = (time.clock() - time_start)

Pythonのドキュメントで参照されているように:

時計()

Unix では、現在のプロセッサ時間を秒単位の浮動小数点数として返します。精度、そして実際には「プロセッサ時間」の意味の定義そのものは、同名の C 関数の精度に依存しますが、いずれにせよ、これは Python やタイミング アルゴリズムのベンチマークに使用する関数です。

Windows では、この関数は、Win32 関数 QueryPerformanceCounter() に基づいて、この関数を最初に呼び出してから経過した壁時計の秒数を浮動小数点数として返します。通常、分解能は 1 マイクロ秒よりも優れています。

参考http ://docs.python.org/library/time.html


これをメモリの計算に使用します。

import resource

resource.getrusage(resource.RUSAGE_SELF).ru_maxrss

参考http ://docs.python.org/library/resource.html

于 2012-08-09T15:36:38.447 に答える
2

コードのタイミングを計るためのjackedCodeTimerPyという非常に優れたライブラリがあります。次に、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

レポにはさらに使用例があります。お役に立てれば。

https://github.com/BebeSparkelSparkel/jackedCodeTimerPY

于 2016-10-14T22:42:11.280 に答える
1

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']
于 2012-08-09T15:40:50.253 に答える