কম্পিউটার টিউটোরিয়াল

পাইথন ডিকশনারি মেমরি ইউজেজ অপ্টিমাইজ করা

কিছু কেসে ডিকশনারি বাদ দিয়ে অন্য ডেটা স্ট্রাকচার ব্যবহার করলে মেমরি বাঁচানো যায়।

১. কন্টিনিউয়াস ইন্টিজার কী → লিস্ট ব্যবহার করুন

# খারাপ: ডিক্ট
d = {0: 'a', 1: 'b', 2: 'c', ...}

# ভালো: লিস্ট
lst = ['a', 'b', 'c', ...]  # O(1) অ্যাক্সেস, কম মেমরি

২. স্ট্রিং-ভিত্তিক কী → ট্রাই (Trie) ব্যবহার করুন

Trie Data Structure স্ট্রিং কী স্টোরেজের জন্য মেমরি-এফিশিয়েন্ট। পাইথনে datrie বা marisa-trie লাইব্রেরি আছে।

৩. __slots__ ব্যবহার করুন (কাস্টম ক্লাসে)

class MyClass:
    __slots__ = ['x', 'y', 'z']  # __dict__ বানাবে না, মেমরি বাঁচায়

৪. নেমডটাপল (NamedTuple) বা ডেটাক্লাস

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])  # ইমিউটেবল, লাইটওয়েট

৫. ডিকশনারি এড়ানো যাবে না সেখানে

অনেক জায়গায় ডিকশনারি ইচ্ছামতো অপ্টিমাল। পাইথনের ডিক্ট হলো সিম্পল হ্যাশ টেবিল ইমপ্লিমেন্টেশন — জাভা, সি++, রাস্ট সবাই একই প্যাটার্ন ফলো করে।

প্রোফাইলিং: tracemalloc বা objgraph ব্যবহার করে আসল বটলनेक খুঁজুন।

  1. পাইথনে ডিকশনারি ইটারেট করার পদ্ধতি

  2. পাইথনে ফাইল ডিলিট করার পদ্ধতি

  3. পাইথনে স্ট্রিংকে ডিকশনারিতে রূপান্তর করা

  4. পাইথন ৩-এ ডিকশনারি ব্যবহার করে স্ট্রিং ফরম্যাট করা