Я хотел бы понять использование памяти кусочками списка, поэтому я провел этот эксперимент:
(я сделал это в скрипте, поэтому я вставил input()
, чтобы сделать паузу, чтобы я мог проверить память использование с инструментом командной строки top
)
input()
# in "top:RES column", I see memory usage ~7MB
lst = list(range(10000000))
print(id(lst))
# id = 140333660359560
input()
# in "top:RES column", I see memory usage ~400MB
lst2 = lst[1:]
print(id(lst2))
# id = 140333661774024
input()
# in "top:RES column", I see memory usage ~480MB
Имеет ли lst2 общий доступ к памяти вместе с lst?
Обновление 1:
Чтобы увидеть разницу между нарезкой и созданием новый список я сделал так:
input()
# in "top:RES column", I see memory usage ~7MB
lst = list(range(10000000))
input()
# in "top:RES column", I see memory usage ~400MB
lst2 = list(range(10000000))
input()
# in "top:RES column", I see memory usage ~800MB