我试图通过运行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。谁能告诉我这里我做错了什么。
感谢您的时间和支持。
由于 拉吉
答案 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()
--------------------------------------------------------------------------------