TGViewer
PyCoders (پایتون) PyCoders (پایتون) @python_rd · 4.11K subscribers
Post #2221 385
🌐 تکنیک عمیق: ژنراتورها در برابر اشغال حافظه

🔹 اگه توی پایتون بخوای یک فایل چند گیگابایتی لاگ رو بخونی یا روی چند میلیون عدد عملیات انجام بدی، ساختن یک لیست معمولی رم سیستمت رو کامل پر می‌کنه و سیستم قفل می‌کنه.

🔹 راهکار پایتونیک استفاده از ژنراتورها به جای لیست کامپرهنشنه. با عوض کردن کروشه به پرانتز معمولی، پایتون به جای ساختن کل دیتا در رم، فرمول تولید اون رو ذخیره می‌کنه و آیتم‌ها رو تک‌به‌تک تحویلت می‌ده.

# روش سنگین برای رم (میلیون‌ها عدد یکجا ساخته می‌شن)
# numbers_list = [x * 2 for x in range(10_000_000)]

# روش بهینه با ژنراتور (مصرف رم نزدیک به صفر)
numbers_gen = (x * 2 for x in range(10_000_000))
print(next(numbers_gen))
print(next(numbers_gen))

🔹 این مفهوم دقیقاً تفاوت اصلی دولوپرهای حرفه‌ای رو موقع کار با داده‌های سنگین، وب اسکرپینگ یا لاگ‌آنالایزرها رقم می‌زنه.

🐍 @python_rd
More from @python_rd
  1. Oct 13, 2026کوییز پایتون 🔆 خروجی اجرای کد زیر چیست؟ t = (1, 2, [3, 4]) try: t[2] += [5] except TypeEr…
  2. Oct 13, 2026🔆 راز مکانیزم پیاده‌سازی و تغییر جهت NaN در الگوریتم مرتب‌سازی پایتون (Timsort) 🔹 باگ ری…
  3. Oct 13, 2026🔆 حذف تاریخی GIL از پایتون (Free-threaded Python) 🔹 یک رویداد تاریخی: حذف قفل مفسر (GIL)…
  4. Oct 11, 2026🔆 مدیریت تمیز منابع با Context Managerهای سفارشی (contextlib) 🔹 ساخت Context Managerها م…
  5. Oct 10, 2026🔆 چرا برای داده‌های حجیم نباید از return استفاده کنی؟ 🔹 وقتی یک تابع لیست بزرگی از داده‌…
  6. Oct 10, 2026🔆 خروجی این تکه کد چیه؟ def add_item(item, lst=[]): lst.append(item) return lst print(add…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →