繁体   English   中英

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

[英]Understanding memory consumption increase in python using Requests HTTP library

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

我无法理解为什么以下代码在执行时会消耗越来越多的内存? 我已经使用任务管理器观察了内存消耗。 如果有人可以指出可能的原因以及如何避免它,那将会很棒? 如果有人可以在他/她的系统上测试这个并且确认不仅是我或我的系统正面临这个问题,那也很棒。 :)尽管内存消耗量增加了很少,但我认为在某些时候,当没有剩余可用内存时,我的应用程序肯定会崩溃。

代码

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

while True:
    getName()

下面详细提供了这个简单问题的原因。 另外我也有类似urllib2模块的问题 所以我想到了使用Requests HTTP库。 但是关于内存消耗的同样问题仍然存在。

真实世界场景 :我的真实世界应用程序是使用python和wxPython构建的。 wxPython代码不会导致此问题。 连接到URL以从服务器获取某些值的python代码导致了问题。 为了更新值,每2秒后获取一次值。 然后,这些获取的值将显示在GUI上。 上面显示的代码是我原始代码的示例。 在上面的代码示例中,只有一个连接到URL的实例。 In my real world app I have 9-10 threads those are doing this fetching stuff by connecting to different URLs! Which means in this case the memory consumption increases more rapidly as compared to the above sample code. 我希望现在更清楚这个问题有多严重。 另外,只是为了澄清我不会废弃任何网站。

比较 :为什么以下代码与上面的代码没有相同的问题:

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

更新:我测试了代码片段半小时。 我最后得出的结论是,内存消耗在开始时会增加,之后会逐渐降低并增加。 最后,内存消耗将保持在一个范围内。 这是在Windows 8操作系统上从processExplorer创建的图表。 中间的一个用于记忆(右键单击图像并单击视图以清楚地看到它): pexplorer

感谢您的时间!

我只能回复你原帖上的一些评论。 我发现http://www.digi.com/wiki/developer/index.php/Python_Garbage_Collection非常有用,以防您想要更好地了解gc。

我测试了代码片段半小时。 我最后得出的结论是,内存消耗在开始时会增加,之后会逐渐降低并增加。 最后,内存消耗将保持在一个范围内。 我相信这是系统在阅读有用的评论后应该如何工作的。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM