2014-03-27 35 views
6

我正在使用python v2.7和Requests HTTP library。我正在使用Windows 7操作系统。了解使用请求HTTP库的python中的内存消耗增加

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

代码

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

while True: 
    getName() 

这样做的理由很简单的问题将在下面详细规定。我也有类似的问题urllib2 module too.所以我想使用请求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

谢谢你的时间!

+0

这篇文章如何与您的[上一个问题在同一主题](http://stackoverflow.com/q/22685507)? –

+0

现在,它们是重复的。只是简化第一篇文章并删除这篇文章,或者删除其他文章并留下这篇文章。 –

+0

好吧,我会删除另一个。 :)删除 –

回答

0

我测试了半小时的代码片段。我最终得出的结论是,内存消耗在一开始就会增加,随后会进入减少和增加的状态。最后,内存消耗将保持在一个范围内。我相信这是系统在阅读有用的评论后应该如何工作的。 :)