通过比较运行算法所需的时间和输入的大小,可以很容易地计算Python中的时间复杂度。我们可以这样做:
import time
start = time.time()
<Run the algorithm on input_n (input of size n)>
end = time.time()
time_n = end - start通过绘制time_n与input_n的关系图,我们可以观察时间复杂度是否为常数、线性、指数等。
在Python中,有没有一种类似的经验的、程序化的方法来计算算法的空间复杂度,我们可以测量随着输入大小的增长而使用的空间量?
发布于 2019-11-30 17:54:16
您可以将memory_profiler与装饰器一起使用,如下所示:
from memory_profiler import profile
@profile(precision=4)
def func():
your function在memory_profiler中还有一个名为mprof的函数也会很有用。如果您想要查看内存是否被定期清理和释放,这将非常有用。只需在您选择的shell中运行mprof run script script_args即可。mprof将自动创建一张脚本内存使用随时间变化的图表,您可以通过运行mprof plot查看该图表。不过,它需要matplotlib。
更新:感谢@hunzter,你可以找到文档here。
https://stackoverflow.com/questions/59114941
复制相似问题