【问题标题】:Is there a Python method to calculate space complexity?是否有 Python 方法来计算空间复杂度?
【发布时间】:2020-03-25 15:36:47
【问题描述】:

通过比较运行算法所需的时间与输入的大小,在 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 吗?
  • @prhmma 感谢您的建议,不,我还没有遇到任何方法来实现我的目标。请给出一个示例用法作为答案,以便我投票/接受它。
  • 他们的 repo 非常简单,请查看here
  • 为了记录,这里没有给出算法的时间复杂度;它测量您使用的任何输入的实际运行时间。一般来说,没有编程方法来确定时间复杂度,因为这需要解决停机问题。

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


【解决方案1】:

您可以将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

【讨论】:

    猜你喜欢
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 2020-04-02
    • 2016-02-27
    • 2011-06-21
    • 2021-01-23
    • 1970-01-01
    相关资源
    最近更新 更多