相关疑难解决方法(0)

Numpy和matplotlib垃圾收集

我有一个python脚本,它为不同的参数(Q,K)进行了许多模拟,绘制结果并将其存储到磁盘.

每组参数(Q,K)产生一个200x200x80数据点的3D体积网格数据,这需要~100 MB的数据.然后,该体积网格的一部分逐层绘制,产生~60个图像.

问题是python显然不会在此过程中释放内存.我不确定内存泄漏在哪里,或者规则如何控制python如何决定哪些对象被释放.我也不确定numpy数组或matplotlib图形对象中的内存是否丢失.

  1. 有没有一种简单的方法来分析 python中的哪些对象在内存中持久存在以及哪些对象被自动释放?
  2. 没有办法强制python释放所有数组并计算在特定循环周期或特定函数调用中创建的对象

代码的相关部分在这里(但是,它不会运行...模拟代码的大部分包括ctypesC++/python接口被省略,因为它太复杂了):

import numpy as np
import matplotlib.pyplot as plt
import ProbeParticle as PP # this is my C++/Python simulation library, take it as blackbox

def relaxedScan3D( xTips, yTips, zTips ):
    ntips = len(zTips); 
    print " zTips : ",zTips
    rTips = np.zeros((ntips,3)) # is this array deallocated when exiting the function?
    rs    = np.zeros((ntips,3)) # and this? …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

6
推荐指数
1
解决办法
996
查看次数

标签 统计

matplotlib ×1

numpy ×1

python ×1