python - Python有计算空间复杂度的方法吗?

标签 python time-complexity complexity-theory space-complexity

通过比较运行算法所需的时间与输入的大小,计算 Python 中的时间复杂度非常容易。我们可以做这样的事情:

import time

start = time.time()
<Run the algorithm on input_n (input of size n)>
end = time.time()
time_n = end - start

通过绘制time_ninput_n的图表,我们可以观察时间复杂度是否为常数、线性、指数等。

是否有一种类似的经验性编程方法来计算 Python 中算法的空间复杂度,我们可以测量随着输入大小的增长所使用的空间量?

最佳答案

您可以将 memory_profiler 与装饰器一起使用,如下所示:

from memory_profiler import profile

  @profile(precision=4)
  def func():
     your function

memory_profiler 中还有另一个名为 mprof 的函数,它也很有用。如果您想查看内存是否定期清理和释放,这会很有用。只需在您选择的 shell 中运行 mprof run script script_args 即可。 mprof 将自动创建脚本随时间的内存使用情况的图表,您可以通过运行 mprofplot 来查看该图表。但它需要matplotlib

更新: 感谢@hunzter,您可以找到文档 here .

关于python - Python有计算空间复杂度的方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59114941/

相关文章:

python - 如何在同一个脚本中安装和导入python模块?

algorithm - 在程序中取对数会对计算机造成负担吗?

c# - 在 stringbuilder 中查看项目的时间复杂度 - C#

python - 使用 join() 的方法的空间复杂度

Python:找出派生类上的哪个方法称为基类方法

python - 从递归嵌套字段列表创建部分字典

big-o - O(1) 和 Θ(1) 有什么区别?

c++ - G++ 中 STL 容器的 size() 复杂度 : which containers are O(n)?

Python - 返回给定纬度和经度的美国州名

algorithm - 三个嵌套循环的时间复杂度?