0

cProfileで分析したい関数がありますが、結果に関する他の多くの分析も保存します-これは現在、プログラムで名前が生成されたディレクトリに保存されており、プロファイルデータをに保存したいと思います同じディレクトリ。

ただし、ディレクトリ名は、コールバック関数で、プロファイルする関数が終了した後にのみ計算されconcurrent.futuresます。

ファイル名がわかったら、コールバック関数に渡して(たとえば、関数の結果とともに返される)ディスクに書き込むことができるPythonオブジェクトにプロファイルデータを保持する簡単な方法はありますか?

4

1 に答える 1

1

run()関数はcProfile.py次のようになります(Python 2.7では、同じアプローチがPython 3にも適用されます)。そこから、Profileオブジェクトを直接操作する場合dump_stats、プロファイリング後に目的の場所に移動できることがわかります。

def run(statement, filename=None, sort=-1):
    """Run statement under profiler optionally saving results in filename

    This function takes a single argument that can be passed to the
    "exec" statement, and an optional file name.  In all cases this
    routine attempts to "exec" its first argument and gather profiling
    statistics from the execution. If no file name is present, then this
    function automatically prints a simple profiling report, sorted by the
    standard name string (file/line/function-name) that is presented in
    each line.
    """
    prof = Profile()
    result = None
    try:
        try:
            prof = prof.run(statement)
        except SystemExit:
            pass
    finally:
        if filename is not None:
            prof.dump_stats(filename)
        else:
            result = prof.print_stats(sort)
    return result
于 2013-03-26T08:43:53.017 に答える