python - 使用 Requests HTTP 库了解 python 中的内存消耗增加

标签 python python-2.7 memory memory-management python-requests

我正在使用 python v2.7 和 Requests HTTP library .我使用的是 Windows 7 操作系统。

我一直不明白为什么下面的代码在执行时会消耗越来越多的内存?我使用任务管理器观察到内存消耗。如果有人能指出可能的原因以及如何避免它,那就太好了?如果有人可以在他/她的系统上对此进行测试并确认不仅是我或我的系统面临这个问题,那就太好了。 :) 尽管内存消耗会增加少量,但我认为在某些时候,当没有更多可用内存时,我的应用程序肯定会崩溃。

代码:

import requests
def getName():
    url = 'https://stackoverflow.com/users/2382792/pss'
    r = requests.get(url)
    print r

while True:
    getName()

下面详细介绍了这个简单问题的原因。我也有类似的问题 urllib2 module too.所以我想到了使用 Requests HTTP 库。但是关于内存消耗的同样问题仍然存在。

真实世界场景:我的真实世界应用是用 python 和 wxPython 构建的。 wxPython 代码不会导致此问题。连接到 URL 以从服务器获取一些值的 python 代码导致了问题。为了保持值更新,每 2 秒获取一次值。这些获取的值随后会显示在 GUI 上。上面显示的代码是我原始代码的示例。此外,在上面的代码示例中,只有一个连接到 URL 的实例。 在我的真实世界应用程序中,我有 9-10 个线程通过连接到不同的 URL 来获取内容!这意味着在这种情况下,与上面的示例代码相比,内存消耗增加得更快。我希望现在更清楚这个问题有多严重。另外,为了澄清,我并没有取消任何网站。

比较:为什么下面的代码和上面的代码没有同样的问题:

import random
def getValue():
    value = random.randrange(0,11)
    print value
while True:
    getValue()

更新:我测试了半个小时的代码片段。我最终得出的结论是,内存消耗在开始时会增加,然后它会处于减少和增加的状态。最后,内存消耗将保持在一个范围内。 这是从 processExplorer 创建的图表在 Windows 8 操作系统上。中间一个是内存(右击图片,点击查看看清楚): pexplorer

感谢您的宝贵时间!

最佳答案

我只能对您的原始帖子发表一些评论。我找到了 http://www.digi.com/wiki/developer/index.php/Python_Garbage_Collection如果您想更好地了解 gc,这将非常有用。

关于python - 使用 Requests HTTP 库了解 python 中的内存消耗增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22687952/

相关文章:

python - 调用 MySQL cursor.execute()(Python 驱动程序)挂起

python - 如何在二进制转换程序中的python中每4位之后创建一个空格

python - 计算行日期之前 x 天的出现次数

python - 如何在 python 2.7 中安装 pem 模块?

c++ - 静态变量的地址值可以与堆分配地址匹配吗?

c++ - 本地数组的性能和安全性作为参数

python - 如何根据通过 android MIC 记录的心音计算每分钟的心跳次数?

python - 在 python 中,一个列表像树形拓扑一样转换为 dict

c++ - 类成员和显式堆栈/堆分配

python - 在 plotly 中使用 x 范围 slider 进行 Y 轴自动缩放