هنگام کار با مجموعه داده های بزرگ یا بهینه سازی عملکرد کد پایتون، درک اینکه ساختار داده چگونه حافظه را مصرف می کند بسیار مهم است. دو ساختار داده رایج در پایتون، لیست ها و تاپل ها، از نظر میزان استفاده از حافظه تفاوت های قابل توجهی دارند.
بیایید این تفاوتها را با برخی از کدهای پایتون بررسی کنیم و بفهمیم که چرا تاپلها معمولاً نسبت به لیستها از لحاظ حافظه کارآمدتر هستند.
مثال 1: تخصیص حافظه
بیایید با مقایسه تخصیص حافظه یک لیست و یک تاپل حاوی داده های مشابه شروع کنیم.
import sys
# Create a list with 100,000 integers
my_list = [i for i in range(100000)]
# Create a tuple with the same integers
my_tuple = tuple(my_list)
# Check memory usage
list_size = sys.getsizeof(my_list)
tuple_size = sys.getsizeof(my_tuple)
print(f"List size: {list_size} bytes")
print(f"Tuple size: {tuple_size} bytes")
خروجی:
List size: 900120 bytes
Tuple size: 800036 bytes
در این مثال، یک لیست با 100000 عدد صحیح حدود 900120 بایت حافظه مصرف می کند، در حالی که یک تاپل با همان تعداد اعداد صحیح تنها حدود 800036 بایت مصرف می کند. تاپل حافظه کمتری نسبت به لیست معادل مصرف می کند.
چرا این طور است؟
- لیستها در پایتون آرایههای پویا هستند، به این معنی که برای ذخیره ارجاعات به اشیا و تطبیق بالقوه به حافظه اضافی نیاز دارند.