python - 为什么这个Python函数执行后不释放内存?

标签 python memory beautifulsoup

我有一个 Python 脚本,它通过 Beautiful Soup 传递的 XML 文件查找文本术语。然后我遍历到我想要提取的值并返回字符串。这行得通,但是因为我在程序主循环中添加了对该函数的调用,所以我最终遇到了 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 - 为什么这个Python函数执行后不释放内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28962338/

相关文章:

algorithm - 就地递归快速排序

python - 使用 BeautifulSoup 在标签内插入标签

python - NetBox 安装期间出错,无法使用 manage.py 创建 super 用户

ios - IOS7和 "Terminated due to Memory Pressure"中的内存管理

python - 应该测试 tdd 的静态文本,例如电子邮件主题?

android - 在Android中调用多个WebView时如何控制内存使用?

python - 获取标签中的数据(HTML 内容)

python - 从 Python 中的任何站点抓取链接标题的一般方法?

python - 可扩展散列 - 最高有效位

python - 将多行合并到数据框列的一行