|
|
1
12
如果您调用了许多不同的函数,并且不确定交换的来源,那么解决这个问题的一种方法是使用
memory_profiler
. 首先,您必须装饰您使用@profile的不同功能。为了简单起见,我将使用这个示例
examples/numpy_example.py
内存配置文件器附带有两个功能:
要运行脚本,而不是使用Python解释器运行它,可以使用mprof可执行文件,即
这将创建一个名为
在这里您可以看到内存消耗情况,括号表示何时进入/离开当前函数。这样就很容易看到这个函数
这将为您提供类似的输出:
很明显,scipy.signal.detrend正在分配大量内存。 |
|
|
2
10
看一看
memory profiler
. 它提供逐行分析和
更新 正如@wickedgedrey提到的,好像有一只虫子( see github issue tracker )当多次调用一个函数时,我可以重现:
然而,我不知道结果可能会影响到什么程度(在我的示例中似乎没有那么多,因此根据您的用例,它可能仍然有用)以及这个问题何时可能得到解决。我是在 github . |
|
|
3
1
由于NUMPY 1.7存在一个半内置的方式来跟踪内存分配: https://github.com/numpy/numpy/tree/master/tools/allocation_tracking |
|
|
4
0
在不使用tmp文件时,可以将一些数组保存/pickle到磁盘吗?这就是我过去在处理大型数组时必须做的事情。当然这会减慢程序的速度,但至少它会完成。除非你一下子就需要它们? |
|
|
5
0
你试过了吗
它将创建一个名为
它有各种有用的信息,但一开始的情节应该是你要找的。也可以退房 massif tutorial 在valgrind主页上。
使用
|