πŸ” Как ΡƒΠ·Π½Π°Ρ‚ΡŒ сколько памяти Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ список Python? 🐍

Бпособ ΡƒΠ·Π½Π°Ρ‚ΡŒ, сколько памяти Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ список Π² Python, ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ модуля sys ΠΈ Π΅Π³ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getsizeof().

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


import sys

my_list = [1, 2, 3, 4, 5]
memory_size = sys.getsizeof(my_list)

print(f"Π Π°Π·ΠΌΠ΅Ρ€ списка: {memory_size} Π±Π°ΠΉΡ‚")
    

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создаСт список my_list ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getsizeof() ΠΈΠ· модуля sys, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ этого списка Π² Π±Π°ΠΉΡ‚Π°Ρ…. Π Π°Π·ΠΌΠ΅Ρ€ списка выводится Π½Π° экран с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ print().

Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ списка, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΡ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ getsizeof(), Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ Π² сСбя Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты списка, Π½ΠΎ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ самом спискС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большС ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΠΎΠ³ΠΎ, особСнно для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… списков.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, сколько памяти Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ список Π² Python?

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ, особСнно Π² Ρ‚Π΅Ρ… языках, Π³Π΄Π΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ, сколько памяти Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ опрСдСлСнная структура Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ позволяСт эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСсурсы ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Python, ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ распространСнных структур Π΄Π°Π½Π½Ρ‹Ρ… являСтся список. Π’ Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅ΠΌ, ΠΊΠ°ΠΊ ΡƒΠ·Π½Π°Ρ‚ΡŒ, сколько памяти Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ список Π² Python.

ИспользованиС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ sys

Π’ Python Π΅ΡΡ‚ΡŒ встроСнная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° sys, которая прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с систСмными рСсурсами, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getsizeof() ΠΈΠ· этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π² Π±Π°ΠΉΡ‚Π°Ρ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€:


import sys

my_list = [1, 2, 3, 4, 5]
size = sys.getsizeof(my_list)
print(f"Π Π°Π·ΠΌΠ΅Ρ€ списка: {size} Π±Π°ΠΉΡ‚")
    

Π’ Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм список my_list ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ getsizeof() ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ sys, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ списка. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выводится с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ print(). ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ прСфикс f ΠΏΠ΅Ρ€Π΅Π΄ строкой, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ size Π² строку.

Π£Ρ‚ΠΎΡ‡Π½Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° списка

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° sys позволяСт Π½Π°ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ самого списка, Π½ΠΎ Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ ссылаСтся. НапримСр, Ссли список содСрТит Π΄Ρ€ΡƒΠ³ΠΈΠ΅ списки ΠΈΠ»ΠΈ словари, ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΡ‡Ρ‚Π΅Π½ ΠΏΡ€ΠΈ использовании ΠΌΠ΅Ρ‚ΠΎΠ΄Π° getsizeof(). Для Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½ΠΎΠ³ΠΎ опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° списка, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ pympler, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» для Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ².


from pympler import asizeof

my_list = [1, 2, 3, 4, 5]
size = asizeof.asizeof(my_list)
print(f"Π Π°Π·ΠΌΠ΅Ρ€ списка: {size} Π±Π°ΠΉΡ‚")
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ asizeof() ΠΈΠ· модуля pympler. Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ создаСм список my_list ΠΈ снова опрСдСляСм Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€. Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС ΠΌΡ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ссылаСтся список.

Π—Π°ΠΌΠ΅Ρ€ памяти Π΄ΠΎ ΠΈ послС создания списка

Иногда Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ Π² Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ памяти Π΄ΠΎ ΠΈ послС создания списка. НапримСр, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ ΡƒΠ·Π½Π°Ρ‚ΡŒ, сколько памяти Ρƒ нас останСтся, Ссли ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ большоС количСство элСмСнтов Π² список. Для этого ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ asizeof() ΠΈΠ· модуля pympler для Π·Π°ΠΌΠ΅Ρ€Π° памяти Π΄ΠΎ ΠΈ послС создания списка ΠΈ вычислСния Ρ€Π°Π·Π½ΠΈΡ†Ρ‹.


from pympler import asizeof

my_list = []
size_before = asizeof.asizeof(my_list)

for i in range(10000):
    my_list.append(i)

size_after = asizeof.asizeof(my_list)
size_difference = size_after - size_before

print(f"Π Π°Π·ΠΌΠ΅Ρ€ списка Π΄ΠΎ: {size_before} Π±Π°ΠΉΡ‚")
print(f"Π Π°Π·ΠΌΠ΅Ρ€ списка послС: {size_after} Π±Π°ΠΉΡ‚")
print(f"Π Π°Π·Π½ΠΈΡ†Π°: {size_difference} Π±Π°ΠΉΡ‚")
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм пустой список my_list ΠΈ Π·Π°Ρ‚Π΅ΠΌ замСряСм Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ for, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт 10 000 элСмСнтов Π² список. ПослС Ρ†ΠΈΠΊΠ»Π° ΠΌΡ‹ снова замСряСм Ρ€Π°Π·ΠΌΠ΅Ρ€ списка, ΠΈ вычисляСм Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°ΠΌΠΈ Π΄ΠΎ ΠΈ послС. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ, сколько памяти Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π—Π½Π°Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° памяти, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ³ΠΎ списком Π² Python, ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ эффСктивного использования рСсурсов. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли Π΄Π²Π° способа опрСдСлСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° списка: ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ getsizeof() ΠΈΠ· модуля sys ΠΈ с использованиСм модуля pympler. ΠœΡ‹ Ρ‚Π°ΠΊΠΆΠ΅ рассмотрСли ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… замСряли Ρ€Π°Π·ΠΌΠ΅Ρ€ списка Π΄ΠΎ ΠΈ послС добавлСния элСмСнтов. НадСюсь, эта информация ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π±ΠΎΠ»Π΅Π΅ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со списками Π² Python.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ сколько памяти Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π° python short #shorts

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ Π² python

Π£Π·Π½Π°Π΅ΠΌ, сколько функция потрСбляСт памяти

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

🐍 Как выглядит ΠΊΠΎΡ€Ρ‚Π΅ΠΆ Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅? πŸ“š Π£Π·Π½Π°ΠΉΡ‚Π΅ всС ΠΎ структурС ΠΈ использовании ΠΊΠΎΡ€Ρ‚Π΅ΠΆΠ΅ΠΉ!

Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ Python ΠΈ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ подходящий?

πŸ”„ Как ΠΏΠ΅Ρ€Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ лист Π² Python: простыС способы ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°

πŸ” Как ΡƒΠ·Π½Π°Ρ‚ΡŒ сколько памяти Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ список Python? 🐍

πŸ” Как ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡, зная Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π° языкС Python?

πŸ€– Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π±ΠΎΡ‚Π° Π² Π’Π΅Π»Π΅Π³Ρ€Π°ΠΌΠΌ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅ с нуля 🐍

πŸ“² Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Python Π½Π° Android: простой способ!