πΎ Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Python: ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ
Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Python?
ΠΠ°ΠΌΡΡΡ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ Python, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΅Π³ΠΎ ΡΠΈΠΏΠ° ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ. ΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ.
Π’ΠΈΠΏ int Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΡΠ½ΠΎ 28 Π±Π°ΠΉΡ, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, Π΅ΡΠ»ΠΈ ΡΠΈΡΠ»ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ΅.
import sys
x = 42
print(sys.getsizeof(x)) # Π Π°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° int
Π’ΠΈΠΏ float Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΡΠ½ΠΎ 24 Π±Π°ΠΉΡΠ°.
import sys
x = 3.14
print(sys.getsizeof(x)) # Π Π°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° float
Π‘ΡΡΠΎΠΊΠ° str Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΠ°ΠΌΡΡΡ Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠΈΠΌΠ²ΠΎΠ».
import sys
x = "Hello, World!"
print(sys.getsizeof(x)) # Π Π°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° str
Π‘ΠΏΠΈΡΠΎΠΊ list Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΠ°ΠΌΡΡΡ Π·Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² Π½Π΅ΠΌ, ΠΏΠ»ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ Π·Π°ΡΡΠ°ΡΡ.
import sys
x = [1, 2, 3, 4, 5]
print(sys.getsizeof(x)) # Π Π°Π·ΠΌΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° list
ΠΡΠΎ Π»ΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Python. ΠΠ±ΡΠ°Ρ ΡΠΎΡΠΌΡΠ»Π° Π½Π΅Ρ, ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠΈ Python ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ².
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
Π‘ΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡ Python?
ΠΠ°ΠΌΡΡΡ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠ°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Python, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΈΠΏ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π°Π½Π½ΡΡ , ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ ΡΡ Π² Π½Π΅ΠΌ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ ΡΠ·Π½Π°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΠΉ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π² Python.
1. Π§ΠΈΡΠ»Π°
Π Python Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΠΏΠΎΠ² ΡΠΈΡΠ΅Π», Π²ΠΊΠ»ΡΡΠ°Ρ int (ΡΠ΅Π»ΡΠ΅ ΡΠΈΡΠ»Π°) ΠΈ float (ΡΠΈΡΠ»Π° Ρ ΠΏΠ»Π°Π²Π°ΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠΎΠΉ). Π Π°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΡΠΈΡΠ»Π°ΠΌΠΈ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΡ ΡΠΈΠΏΠ° ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
import sys
x = 42
print(sys.getsizeof(x)) # ΠΡΠ²ΠΎΠ΄ΠΈΡ: 28 (Π±Π°ΠΉΡ)
y = 3.14
print(sys.getsizeof(y)) # ΠΡΠ²ΠΎΠ΄ΠΈΡ: 24 (Π±Π°ΠΉΡΠ°)
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Π² Python ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π΄Π»Ρ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ ΡΠΈΡΠ»Π°, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΡΠΈΡΠ»Π°.
2. Π‘ΡΡΠΎΠΊΠΈ
Π‘ΡΡΠΎΠΊΠΈ Π² Python ΠΌΠΎΠ³ΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΡΠ°Π·Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡ Π΄Π»ΠΈΠ½Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ.
import sys
s1 = 'Hello, world!'
print(sys.getsizeof(s1)) # ΠΡΠ²ΠΎΠ΄ΠΈΡ: 58 (Π±Π°ΠΉΡ)
s2 = 'ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!'
print(sys.getsizeof(s2)) # ΠΡΠ²ΠΎΠ΄ΠΈΡ: 78 (Π±Π°ΠΉΡ)
ΠΡΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡΡ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Python ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²ΠΊΠΈ.
3. Π‘ΠΏΠΈΡΠΊΠΈ ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠΈ
Π‘ΠΏΠΈΡΠΊΠΈ (list) ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠΈ (tuple) Π² Python ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·Π½ΡΡ ΡΠΈΠΏΠΎΠ². Π Π°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΡΡΠ΅ΠΆΠ°ΠΌΠΈ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΈΡ Π΄Π»ΠΈΠ½Ρ ΠΈ ΡΠΈΠΏΠΎΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
import sys
my_list = [1, 2, 3, 4, 5]
print(sys.getsizeof(my_list)) # ΠΡΠ²ΠΎΠ΄ΠΈΡ: 104 (Π±Π°ΠΉΡΠ°)
my_tuple = (1, 2, 3, 4, 5)
print(sys.getsizeof(my_tuple)) # ΠΡΠ²ΠΎΠ΄ΠΈΡ: 88 (Π±Π°ΠΉΡ)
4. Π‘Π»ΠΎΠ²Π°ΡΠΈ
Π‘Π»ΠΎΠ²Π°ΡΠΈ (dict) Π² Python ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Ρ ΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΡΡ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΡΠΉ ΡΠ»ΠΎΠ²Π°ΡΡΠΌΠΈ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΠ°Ρ ΠΊΠ»ΡΡ-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π² Π½ΠΈΡ .
import sys
my_dict = {'a': 1, 'b': 2, 'c': 3}
print(sys.getsizeof(my_dict)) # ΠΡΠ²ΠΎΠ΄ΠΈΡ: 240 (Π±Π°ΠΉΡ)
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ»ΠΎΠ²Π°ΡΠΈ ΠΌΠΎΠ³ΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ·-Π·Π° Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ Ρ ΡΠ°Π½Π΅Π½ΠΈΡ Ρ Π΅Ρ-ΡΠ°Π±Π»ΠΈΡΡ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌ.
5. ΠΠ±ΡΠ΅ΠΊΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ Π² Python ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ. Π Π°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ°, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΅Π³ΠΎ ΡΡΡΡΠΊΡΡΡΡ ΠΈ Π΄Π°Π½Π½ΡΡ .
import sys
class MyClass:
def __init__(self, x):
self.x = x
obj = MyClass(42)
print(sys.getsizeof(obj)) # ΠΡΠ²ΠΎΠ΄ΠΈΡ: 56 (Π±Π°ΠΉΡ)
ΠΠ΄Π΅ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΠΏΠ°ΠΌΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
ΠΡΠ²ΠΎΠ΄
Π Π°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Python, ΠΌΠΎΠΆΠ΅Ρ ΡΠΈΠ»ΡΠ½ΠΎ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΠΏΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ°, Π΅Π³ΠΎ ΡΡΡΡΠΊΡΡΡΡ ΠΈ Ρ
ΡΠ°Π½ΡΡΠΈΡ
ΡΡ Π΄Π°Π½Π½ΡΡ
. Π Π΄Π°Π½Π½ΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ½ΠΊΡΠΈΡ sys.getsizeof()
Π΄Π»Ρ ΠΎΡΠ΅Π½ΠΊΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΠΈ, Π·Π°Π½ΠΈΠΌΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
ΠΠ΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠ°ΠΌΡΡΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΡΡ Python ΠΈ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ . ΠΡΠ»ΠΈ Π²Π°ΠΌ Π²Π°ΠΆΠ½Π° ΡΠΎΡΠ½Π°Ρ ΠΎΡΠ΅Π½ΠΊΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ Π² Π²Π°ΡΠ΅ΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΈ.