算法题的时间要求
计时工具timeit
print(timeit.timeit("print4()", "from __main__ import print4", number=1000000))
print(timeit.timeit(print4, "from __main__ import print4", number=1000000))
接受的参数
- 字符串型/可执行型,如果是字符串就是你要执行的程序或者是带括号的函数,如果是可执行型不能带括号
- 第二个参数是建立测试的语句,"from __main__ import print4"可以把print4从__main__命名空间导入到timeit设置计时的命名空间。注意这样可以在一个干净的环境中运行计时测试,以免某些变量以某种意外的方式干扰函数的性能。注意这里的函数不能加括号
- 后面还有number参数,可设置执行次数,默认一百万次
返回值
一个以秒为单位的浮点数
如何加快输出
众所周知,print在python里的运行速度非常滴慢
真正快就是标准输出流
sys.stdout.write('1\n')
相当于print(1)
在某些情况下将所有输出都加入列表可以加快输出速度
在某些情况下,在打印之前将输出追加到列表可能是一个更快的选择。以下是一些示例:
- 当您需要生成大量输出时:如果要生成大量输出,将输出追加到列表可能比单独打印每一行更快。这是因为它减少了系统需要在 Python 解释器和控制台之间切换的次数,这在打印大量数据时可能是开销的重要来源。
- 当输出复杂或需要格式化时:如果输出复杂或需要格式化,将其追加到列表可以在打印前更轻松地管理和修改输出。例如,如果需要生成带有标题、副标题和脚注的报告,则可以将报表的每个部分追加到列表中,然后在打印之前设置输出的格式并加入输出。
- 需要捕获输出以供以后使用时:如果需要捕获输出以供以后使用,例如将其保存到文件或将其传递给另一个函数,则将输出追加到列表可以更轻松地操作和存储输出。
- 需要按特定顺序打印输出时:如果输出的顺序很重要,则将输出追加到列表可以更轻松地确保输出以正确的顺序打印。例如,如果需要打印包含行和列的数据表,则可以将每一行追加到列表中,然后按正确的顺序打印行。
与往常一样,在您的特定用例中测试和衡量不同方法的性能以确定最适合您的情况的方法非常重要。
O(1)
len()
str/bytes/list/tuple 的长度由解释器在内部记录并维护