簡體   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