Pythonのコードにどれくらいの時間とどれくらいのメモリが必要かを見つける方法として、誰かが私を助けることができますか?
4 に答える
これを使用して時間を計算します。
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
コードのタイミングを計るための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
レポにはさらに使用例があります。お役に立てれば。
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']