假设我想测试两个这样的堆实现:
def test_heap():
for i in range(15):
test_list = random.sample(range(10000), 1000)
print(timeit("h = heap1(test_list)", "setup"))
print(timeit("h = heap2(test_list)", "setup"))
if __name__ == "__main__":
test_heap()
我不想将test_heap
中的任何内容放入主要内容,设置声明应该是什么,以便我可以将test_list
导入timeit
?
答案 0 :(得分:1)
你需要的一些名字显然是全局的。 (至少,我认为它们是因为它们没有显示。)你可以从StackView
导入它们。
__main__
"from __main__ import heap1, heap2"
更难了。您可以从函数的test_list
获取,但locals()
中没有。在这种情况下可能最容易做的事情,因为它只是一个整数列表,就是构造一个字符串版本的列表并让Python对它进行评估。
timeit()
(如果您有例如对象实例,这将无法正常工作。)
将它们与分号放在一起,您将获得以下设置字符串:
"test_list = %r" % test_list
(另外,请记住关闭括号)