Понимание увеличения потребления памяти в python с помощью запросов HTTP-библиотеки

Я использую python v2.7 и запрашивает библиотеку HTTP . Я использую ОС Windows 7.

Я не понял, почему следующий код потребляет все больше и больше памяти при исполнении? Я наблюдал потребление памяти с помощью диспетчера задач. Было бы здорово, если бы кто-нибудь мог указать, что может быть возможной причиной и как избежать этого? Также было бы здорово, если кто-то сможет проверить это на своей системе и подтвердить, что перед этой проблемой стоит не только я или моя система. 🙂 Хотя потребление памяти увеличивается с небольшой суммой, я думаю, что в какой-то момент мое приложение наверняка потерпит крах, когда больше не останется свободной памяти.

Код :

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

Причина этого простого вопроса подробно описана ниже. Также у меня есть аналогичная проблема с модулем urllib2. Поэтому я подумал об использовании библиотеки HTTP запросов. Но та же проблема, связанная с потреблением памяти, сохраняется.

Сценарий реального мира : мое приложение для реального мира построено с помощью python и wxPython. Код wxPython не вызывает этой проблемы. Проблемы, связанные с кодом Python, который подключается к URL-адресам для извлечения некоторых значений с сервера. Чтобы обновлять значения, значения выбираются через каждые 2 секунды. Эти извлеченные значения отображаются в графическом интерфейсе. Код, показанный выше, является образцом моего исходного кода. Более того, в приведенном выше примере кода есть только один экземпляр подключения к 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() 

Обновление: я проверил фрагмент кода в течение получаса. Наконец, я пришел к выводу, что потребление памяти увеличивается в начале, а затем становится в состоянии, когда оно уменьшается, а также увеличивается. Наконец, потребление памяти останется в диапазоне. Вот график, созданный из processExplorer в ОС Windows 8. Среднее значение для памяти (щелкните правой кнопкой мыши изображение и щелкните по нему, чтобы увидеть его): pexplorer

Спасибо за ваше время!

  • Как мне высмеять метод, который использует request.get в моем классе?
  • Как найти открытую рамку чтения в Python
  • Python subprocess.call не ждет выполнения команды
  • Python Pandas - читать файл csv, содержащий несколько таблиц
  • Почему json.dumps (list (np.arange (5))) сбой, тогда как json.dumps (np.arange (5) .tolist ()) работает
  • Python - Домашнее задание - Преобразование любой базы в любую базу
  • Как сделать тайм-аут subprocess.call с помощью python 2.7.6?
  • Может ли json.loads игнорировать запятую?
  • 2 Solutions collect form web for “Понимание увеличения потребления памяти в python с помощью запросов HTTP-библиотеки”

    Я могу только добавить некоторые комментарии к вашему оригинальному сообщению. Я нашел http://www.digi.com/wiki/developer/index.php/Python_Garbage_Collection, что очень полезно, если вы хотите получить лучшее представление о gc.

    Я проверил фрагмент кода на полчаса. Наконец, я пришел к выводу, что потребление памяти увеличивается в начале, а затем становится в состоянии, когда оно уменьшается, а также увеличивается. Наконец, потребление памяти останется в диапазоне. Я считаю, что именно так система должна работать после прочтения полезных комментариев. 🙂

    Python - лучший язык программирования в мире.