使用timeit时正确的导入方式是什么?

5 投票
1 回答
1693 浏览
提问于 2025-04-16 09:36

我在测试以下代码,来自我之前的一个问题(把列表转成字典):

single = ['key1', 'value1', 'key2', 'value2', 'key3', 'value3']

if __name__ == '__main__':
    from timeit import Timer
    print Timer("dict(zip(single[::2], single[1::2]))",
        "from __main__ import single").timeit()
    print Timer("si = iter(single); dict(izip(si, si))",
        "from __main__ import single; from itertools import izip").timeit()

我不太确定在使用 timeit 时,最佳做法是把 izip 导入放在 Timer 的语句中,还是放在准备阶段(我猜应该放在准备阶段,但最终的计时结果会因为我选择的不同而有所差异)。

总之,我只是希望能从你们那里得到一些关于如何计时代码的额外见解等等。(另外,我只是想学习,并不是在追求过早的优化之类的。)

谢谢。

1 个回答

5

在设置的时候做这件事。毕竟,你不会每次创建一个字典的时候都重新导入这个模块,而是只会在整个程序运行时导入一次。你不需要担心导入模块的时间问题。

撰写回答