1
function_to_test(test, mylist): #test as an int, mylist as a list of int
     do_something    
     return something

function_generates_a_list(min, max): #min, max are int
     do_something
     return a_List

function_to_test とこれだけの時間を計る必要があります。目的は、int が int のリストにあるかどうかをテストするのに最適なコードを判断するために、コードをテストすることです。(testは googolplex でありmylist、最小から最大までの巨大なリストです)。はい、私はすでに関数の結果を知っています。何回かかるかを知る必要があります。

私の問題は、テストする関数のローカル パラメーターとしてグローバル リストを渡したい場合、timeit でどの構文を使用すればよいかということです。

4

1 に答える 1

1

これを行う最も簡単な方法は、引数を取らず、必要な引数を指定して関数を呼び出す関数を作成することです。

mylist = function_generates_a_list()
def newfunc():
   function_to_test(mylist)

その後、 を呼び出すことができますtimeit(newfunc)。ラムダ式を使用してこれを行うこともできます-timeit(lambda: function_to_test(mylist))上記とまったく同じです。timeitモジュール単位で使用している (つまり、 を実行しているpython -m timeit ...) 場合は、次のようにすることもできます。

python -m timeit --setup='import mymodule' 'mymodule.newfunc()'

newfunc十分に複雑な文字列を使用することで、完全に回避できsetupます (への呼び出しfunction_generates_a_listは、おそらく (ここのように) セットアップで行う必要がありますが、タイミングの一部にしたくない場合は、モジュールをインポートするときに必ずしも発生する必要はありません)。 )、しかし、機能を持つことで物事がより柔軟になり、煩わしさがなくなります。

于 2012-06-20T14:14:22.863 に答える