paraview python脚本:删除(renderView1)不释放内存

时间:2015-07-15 06:51:00

标签: python paraview

我试图通过运行python shell的python脚本来加载多个状态文件。该脚本如下



#### import the simple module from the paraview
from paraview.simple import *

for time in range(0,200):
        renderView1 = GetActiveViewOrCreate('RenderView')

        # destroy renderView1
        Delete(renderView1)
        del renderView1

        filename = 'filepath/filename-%s.pvsm' % time
        servermanager.LoadState(filename)
        renderView=SetActiveView(GetRenderView())
        Render()
        # get layout
        viewLayout = GetLayout()

        # save screenshot
        SaveScreenshot('filepath/filename-%s.png' % time, layout=viewLayout, magnification=3, quality=100)




我正在监视机器使用的内存,经过一段时间后,机器使用的内存是整个RAM。谁能告诉我这里我做错了什么。

感谢您的时间和支持。

由于 拉吉

2 个答案:

答案 0 :(得分:2)

Python是垃圾收集的,这意味着当您执行“someBigObject”时,无法保证对象实际上已从内存中删除。事实上,做一些对象'它不仅毫无意义,而且被认为是不好的风格。

del仅删除该标识符与对象之间的绑定。因此del实际上不会导致对象从内存中删除。

有关详细信息,请参阅此处: https://www.quora.com/Why-doesnt-Python-release-the-memory-when-I-delete-a-large-object

答案 1 :(得分:1)

根据Utkarsh的建议,以下脚本解决了我的问题。有关详细信息,请参阅此answer



--------------------------------------------------------------------------------
from paraview.simple import *

def ResetSession():
    pxm = servermanager.ProxyManager()
    pxm.UnRegisterProxies()
    del pxm
    Disconnect()
    Connect()

for i in range(0, 10):
    ResetSession()
    servermanager.LoadState("/tmp/sample.pvsm")
    renderView=SetActiveView(GetRenderView())
    Render()
--------------------------------------------------------------------------------