0

timeitを使用して単純なPythonメソッドの時間を計測しようとしていますが、次のエラーが発生し続けます

File "<timeit-src>", line 6, in inner
KeyError: 'tree'

以下に示すように、コードは「ツリー」オブジェクトを作成し、そのオブジェクトをタイマーオブジェクトに渡そうとします。私はこれが問題があるところだと思います。

代わりにbinarytree.mkthing(0,10)をTimerに渡すと、コードが機能することに注意してください。ただし、これを行うと、すべてのパスでmkthingが呼び出されます。一度だけ呼び出して、再利用したいです。

どうすればいいですか?

if __name__=="__main__":

    tree = mkthing(0,10)

    t1=timeit.Timer("binarytree.traverse_asc(locals()['tree'],binarytree.printout)","import binarytree")
    print t1.repeat(2, 3)
4

2 に答える 2

1

あなたができること: from __main__ import treeセットアップコードで:

t1 = timeit.Timer("binarytree.traverse_asc(tree,binarytree.printout)",
                  setup = "import binarytree; from __main__ import tree")

または、さらに良いことに、もの ( tree) の作成をすべて一緒にセットアップ コードに移動します。

t1 = timeit.Timer("binarytree.traverse_asc(tree,binarytree.printout)",
                  setup = "import binarytree; tree = mkthing(0,10)")
于 2013-02-03T03:50:04.563 に答える
0

timeit.Timer は、 timeit モジュール内で渡したステートメントを評価します。ツリー変数にアクセスできません。

質問は多少関連しており、要点を理解するのに役立つはずです。

于 2013-02-03T03:50:22.880 に答える