Рубрики
Без рубрики

Управление памятью в Python – часть 1

Краткое прохождение того, как переменные хранятся в Python и как работает управление памятью. Tagged с помощью Python, Memory Managment, переменных, строк.

Спотыкаясь на фрагмент кода Python из GitHub Репо Я понял, что в переменных Python фактически не хранятся значения, которые они также назначают, переменные фактически хранят местоположение до значения. В отличие от C ++/C, который на самом деле создает пространство фиксированного размера и присваивает его созданной переменной, которую мы обычно называем ведром/комнатой, объясняя переменные для новичка «Какие переменные?» в программировании.

Мысль переменные Python немного отличаются, они работают как клавиши, которые указывают на определенную комнату в отеле (пространство памяти), поэтому всякий раз, когда мы делаем задание для доступного, мы не создаем комнаты, скорее создавая ключи для той комнаты, которая освобождается/перезаписывается Коллектор мусора Python автоматически. (Подробнее о теме коллекционера мусора позже). Итак, дело в том, что когда мы делаем что -то вроде

>>>a = 10

>>>b = 10

>>>id(a)

94268504788576

>>>id(b)

94268504788576

Мы оптимизируем здесь и создаем два одинаковых ключа, которые указывают на одну и ту же комнату в отеле (память), поэтому у них будет тот же идентификатор, но этот вид оптимизации работает только с диапазоном чисел от -5 до 256, если вы превышаете диапазон , переменные будут указывать на два разных стера, поэтому будут иметь разные id ().

Только не путайте, почему мы не использовали «==» вместо этого использовали id (), независимо от того, является ли значение, указанное переменными, одно и не внутри объекта, и id () проверяет, использует ли оно один и тот же объект или нет из -за каждого из них У объекта есть уникальная идентичность, которая может быть проверена функцией id ().

Возвращаясь к фрагменту кода из репо Github, приведенном ниже, и применение того же знания целых чисел к строкам.

>>>a = "wtf"

>>>b = "wtf"

>>>id(a),id(b)

(139942771029080, 139942771029080)

>>>a = "wtf!"

>>>b = "wtf!"

>>>id(a),id(b)

(139942771029192, 139942771029136)

>>>a = "hello world this is a string"

>>>a = "hello world this is a string"

>>>id(a),id(b)

(139942770977328, 139942770977408)

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

Это показывает абстракцию в «Лучшем», и Python очень хорош в этом, он выполняет всю тяжелую работу для вас по распределению/сделке памяти для вас и позволяет сосредоточиться на других частях программы. Пока вы действительно не захотите знать, что происходит И я предполагаю, что вы делаете, поэтому вы читаете этот блог 😛

Хотя это объяснение уже было доступно в репо. Я хотел узнать больше о том, как происходит управление памятью внутри страны, поэтому я наткнулся на разговор о «Управление памятью памяти в Python – Основы “by nnja . Так Да, люди с ними, такими как ниндзя, великолепны с Python и Fortnite, хахаха! (Я не мог удержаться от публикации этой шутки, и просто выяснить вещи, ниндзя – один из лучших игроков Fortnite)

Таким образом, если вы видите технически у Python нет переменной, а «имена», которые относится к другим объектам или именам, и Python любит сохранять подсчет всех ссылок, называемых ссылками всех ссылок объекта. Таким образом, если эталонный счет объекта уменьшается до нуля, это означает, что на тот объект нет ссылки, который, как видно из сборщика мусора Python, в качестве свободного пространства, поэтому объект удаляется, а пространство может свободно использовать.

Мы, как программист, можем увеличить или уменьшить количество эталонного количества объекта, поскольку объект Python сохраняет три вещи:

* Type: int,string,float
* Reference Count
* Value

Видя первый фрагмент кода блога, где два имени A и B, в котором оба имена указывают на один и тот же объект со значением 10 со счетом ссылок 1 и типом как int.

Это все для этой части, будет охватывать одни и те же темы в некоторых деталях в следующей части. Все еще смущены в некоторых вещах, так что, как я буду простым и понятным для будущего, я оглядываюсь назад, когда я потерян и даже не могу заметить простые вещи 😛 и для того, кто просто хочет знать это.

Оригинал: “https://dev.to/pradhvan/memory-managment-in-python–part-1-1c98”