2014-03-27 52 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

我測試了半小時的代碼片段。我最終得出的結論是,內存消耗在一開始就會增加,隨後會進入減少和增加的狀態。最後,內存消耗將保持在一個範圍內。我相信這是系統在閱讀有用的評論後應該如何工作的。 :)