timeit 在 Python 中抛出密钥错误



我正在尝试使用timeit对一个简单的Python方法进行计时,但是我不断收到以下错误

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

如下所示的代码创建一个"树"对象,然后我尝试在 Timer 对象中传递该对象。 我想这就是问题所在。

请注意,如果我将binarytree.mkthing(0,10)传递给计时器,则代码可以正常工作。 但是,这样做在每次传递时都需要 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)

你可以做: 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)")

timeit。计时器评估您在 timeit 模块中传递它的语句。它无法访问树变量。

这个问题有点相关,应该可以帮助您了解要点。

相关内容

  • 没有找到相关文章

最新更新