プログラム内でcrofileを呼び出す方法を理解できません
質問
初心者の質問で申し訳ありませんが、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値を使用して関数をプロファイルできます。
おそらくこれを達成するためのよりきちんとした方法がありますが、それは機能します。