您可以将memory_profiler
与这样的装饰器一起使用:
通过将运行算法所需的时间与输入大小进行比较,可以很容易地在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中,是否有一种类似的基于经验的编程方式来计算算法的空间复杂度,我们可以在其中测量随着输入大小的增加而使用的空间量?
通过将运行算法所需的时间与输入大小进行比较,可以很容易地在Python中计算时间复杂度。我们可以做类似的事情:导入时间开始= time.time() 您可以将 更新:感谢@hunzter,您可以找到文档here。memory_profiler
与这样的装饰器一起使用:from memory_profiler import profile
@profile(precision=4)
def func():
your function
mprof
中还有另一个称为memory_profiler
的功能,也将很有用。如果要查看内存是否定期清理和释放,这将很有用。在所选的shell中运行mprof运行脚本script_args。 mprof将自动创建脚本随时间变化的内存使用情况的图形,您可以通过运行mprof plot来查看该图形。它需要matplotlib
。
您可以将memory_profiler
与这样的装饰器一起使用: