我正在使用 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 操作系统上。中间一个是内存(右击图片,点击查看看清楚):
感谢您的宝贵时间!
最佳答案
我只能对您的原始帖子发表一些评论。我找到了 http://www.digi.com/wiki/developer/index.php/Python_Garbage_Collection如果您想更好地了解 gc,这将非常有用。
关于python - 使用 Requests HTTP 库了解 python 中的内存消耗增加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22687952/