Python хранит похожие объекты в смежных местах памяти?

Хранит ли Python похожие объекты в местах памяти, расположенных ближе друг к другу? Так как id из подобных объектов, скажем lists а также tuples, ближе друг к другу, чем объект типа str,

1 ответ

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

Возможно, вы видите, что строковые литералы создаются во время импорта (часть констант в байтовом коде) и интернируются, а списки и кортежи (которые не содержат литералов) создаются во время выполнения кода. Если между ними выделяется куча памяти (особенно если она не освобождена), состояние кучи может быть достаточно различным, чтобы при проверке выдавались совершенно разные адреса.

Другие вопросы по тегам