为什么这个Python函数执行后不释放内存?
Why does this Python function not release memory after execution?
我有一个 Python 脚本,它查看一个 XML 文件,该文件已通过 Beautiful Soup 传递以寻找文本术语。然后我遍历到我想要提取的值和 return 字符串。这行得通,但是因为我在程序主循环中添加了对该函数的调用,所以我最终遇到了 MemoryError 问题。查看 Windows 任务管理器我发现每次调用后内存都没有释放,系统内存不足。问题似乎出在 'return myLink.string' 行。这是否包含对内存中对象的引用,我该如何解决这个问题?
def FindUptime(soup):
link = soup.find(text=re.compile("Uptime"))
if link:
myLink = link.parent
myLink = myLink.next_sibling
if myLink.string == "Up:":
myLink = myLink.next_sibling
myLink = myLink.next_element
else:
print "Can't find Up: term"
return myLink.string
else:
print "Can't find Uptime"
return ""
调用者
readings[sensorIds[i][SENSOR_NAME]] = FindUptime(soup)
修改为...
def FindUptime(soup):
link = soup.find(text=re.compile("Uptime"))
if link:
myLink = link.parent
myLink = myLink.next_sibling
if myLink.string == "Up:":
myLink = myLink.next_sibling
myLink = myLink.next_element
else:
print "Can't find Up: term"
uptime = str(myLink.string) # added
return uptime
else:
print "Can't find Uptime"
return ""
我有一个 Python 脚本,它查看一个 XML 文件,该文件已通过 Beautiful Soup 传递以寻找文本术语。然后我遍历到我想要提取的值和 return 字符串。这行得通,但是因为我在程序主循环中添加了对该函数的调用,所以我最终遇到了 MemoryError 问题。查看 Windows 任务管理器我发现每次调用后内存都没有释放,系统内存不足。问题似乎出在 'return myLink.string' 行。这是否包含对内存中对象的引用,我该如何解决这个问题?
def FindUptime(soup):
link = soup.find(text=re.compile("Uptime"))
if link:
myLink = link.parent
myLink = myLink.next_sibling
if myLink.string == "Up:":
myLink = myLink.next_sibling
myLink = myLink.next_element
else:
print "Can't find Up: term"
return myLink.string
else:
print "Can't find Uptime"
return ""
调用者
readings[sensorIds[i][SENSOR_NAME]] = FindUptime(soup)
修改为...
def FindUptime(soup):
link = soup.find(text=re.compile("Uptime"))
if link:
myLink = link.parent
myLink = myLink.next_sibling
if myLink.string == "Up:":
myLink = myLink.next_sibling
myLink = myLink.next_element
else:
print "Can't find Up: term"
uptime = str(myLink.string) # added
return uptime
else:
print "Can't find Uptime"
return ""