2

できるだけ多くのパラメーターを使用して Python コードをプロファイリングしたい: 1. 時間 (現在はmemory_profiler使用) 2. メモリ (現在はcProfileまたはprofile を使用)どれか)

(私が理解しているように)最も簡単なことは、上記のモジュールで -m フラグを使用することです(例:python -m cProfile [-o output_file] [-s sort_order] myscript.py

では、memory_profiler モジュールと cProfile/profile モジュールの両方に -m フラグを使用するにはどうすればよいでしょうか?

4

1 に答える 1

1

複数のモジュールで -m フラグを使用できるとは思いません。ただし、スクリプトで cProfile を使用することはまったく難しくありません。

import cProfile, pstats

profiler = cProfile.Profile()    # create profiler
profiler.enable()                # start profiling

# do stuff

profiler.disable()               # end profiling

with open('profile.txt', 'w') as fo: # open a file to print the stats
    pstat_profile = pstats.Stats(profiler, stream=fo) # create a pstats object from the profile bound to a file stream
    pstat_profile = print_stats() # print stats to a file

これにより、タイミング統計の整理された優れたプリントアウトが得られます。これで、memory_profiler に対して -m を指定してこの変更されたスクリプトを実行し、両方を取得できます。

アクセスを監視するための Python ベースのツールについては知りません。ただし、「IO速度の測定」をGoogleで検索すると、あちこちでヒットするため、サードパーティのユーティリティ(またはLinuxを使用している場合はDDなどの組み込みツール)を見つけることができるはずです。スクリプトの起動時に IO パフォーマンスを追跡するために使用します。

最終的には、IO ロガー内のメモリ プロファイラーの下で時間プロファイリング スクリプトを実行することになりますが、それらはうまく連携して動作し、それらの相互作用を簡単に見つけることができるはずです。たとえば、時間プロファイラーのスクリプト内起動は、メモリ プロファイルにメモリ割り当てとして表示されますが、無視できることがわかります。

于 2014-08-13T15:20:14.883 に答える