Как Python обрабатывает память? - PullRequest
4 голосов
/ 18 декабря 2010

Я просматривал базу данных в памяти - и это заставило меня задуматься, как Python обрабатывает ввод-вывод, который не привязан к соединению (и даже данные, которые есть); например, хэши, наборы и т.д .; это где-то конфиг, или он динамически управляется на основе ресурсов; Существуют ли "простые" способы посмотреть, как ресурсы влияют на реальную программу, и смоделировать, как производительность будет отличаться от аппаратных настроек?

ПРИМЕЧАНИЕ. Если это имеет значение, Redis - это хранилище данных в памяти, на которое я смотрю; есть реализация оболочки для типов данных Redis , поэтому они имитируют типы данных, найденные в Python.

Ответы [ 2 ]

7 голосов
/ 18 декабря 2010

Python выделяет всю память, которую запрашивает приложение. Там не так много места для политики. Единственный вопрос, когда освободить память. (C) Python немедленно освобождает всю память, на которую больше нет ссылок (это также не настраивается). Память, на которую ссылаются только от себя (т.е. циклы), освобождается сборщиком мусора; это имеет настраиваемые параметры.

Это решение операционной системы записать часть памяти в файл подкачки.

1 голос
/ 18 декабря 2010

Не совсем то, что вы просите, но Dowser - это инструмент Python для интерактивного просмотра использования памяти запущенной программой.Очень полезно для понимания использования памяти и шаблонов распределения.

http://www.aminus.net/wiki/Dowser

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...