質問

初心者の質問で申し訳ありませんが、CProfileを理解できません(私はPythonに本当に初めてです)

ターミナルを介して次のことを実行できます。

python -m cProfile myscript.py

しかし、私はそれをWebサーバーで実行する必要があるので、コマンドを見ているスクリプト内に入れたいと思います。どうやってこれを行いますか?のような用語を使用しているものを見てきました __init__ and __main__ しかし、私はそれらが何であるかを本当に理解していません。

私はこれが簡単であることを知っています、私はまだすべてを学ぼうとしているだけで、これを知っている人がいることを知っています。

前もって感謝します!それは有り難いです。

役に立ちましたか?

解決

あなたはこのようなアイデアを見てきたと思います:

if __name__ == "__main__":
    # do something if this script is invoked
    # as python scriptname. Otherwise, gets ignored.

何が起こるかは、スクリプトでpythonを呼び出すと、そのファイルに属性があります __name__ に設定 "__main__" ファイルがPython実行可能ファイルによって直接呼び出されている場合。それ以外の場合は、(直接呼び出されていない場合)インポートされます。

これで、必要に応じて、このトリックをスクリプトで使用できます。たとえば、次のことを想定する必要があります。

def somescriptfunc():
    # does something
    pass


if __name__ == "__main__":
    # do something if this script is invoked
    # as python scriptname. Otherwise, gets ignored.

    import cProfile
    cProfile.run('somescriptfunc()')

これにより、スクリプトが変更されます。インポートすると、メンバー機能、クラスなどは通常どおり使用できます。いつ 走る コマンドラインから、それ自体をプロファイルします。

これはあなたが探しているものですか?


私がもっと集めたコメントから、おそらく必要なので、次のようになります。

CGIの変更からスクリプトを実行している場合は、フォームです。

# do some stuff to extract the parameters
# do something with the parameters
# return the response.

私が要約を言うとき、あなたはこれを行うことができます:

def do_something_with_parameters(param1, param2):
    pass

if __name__ = "__main__":
    import cProfile
    cProfile.run('do_something_with_parameters(param1=\'sometestvalue\')')

そのファイルをPythonパスに置きます。実行すると、プロファイリングが必要な関数がプロファイルされます。

ここで、CGIスクリプトのために、次のようなスクリプトを作成します。

import {insert name of script from above here}

# do something to determine parameter values
# do something with them *via the function*:
do_something_with_parameters(param1=..., param2=...)
# return something

したがって、CGIスクリプトはあなたの関数(とにかく)の小さなラッパーになり、機能がセルフテストされています。

次に、生産サーバーから離れて、デスクトップ上のMADE UP値を使用して関数をプロファイルできます。

おそらくこれを達成するためのよりきちんとした方法がありますが、それは機能します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top