contextlib و تمیزکاری خودکار🔹 چطوری با ۶ خط کد، سرعت اجرای توابع رو بدون تغییر دادنشون بسنجیم؟
🔹 بهجای اینکه هر بار قبل و بعد از یک بلاک کد
time.time() بنویسید یا برای باز و بسته کردن کانکشنها کلی try/finally کثیف بزنید، با ماژول استاندارد contextlib میتونید کانتکست منیجر اختصاصی خودتون رو مثل آب خوردن با دستور with پیاده کنید!🔹 نمونه کد عملی:
import time
from contextlib import contextmanager
@contextmanager
def execution_timer(task_name: str):
start = time.perf_counter()
print(f"⏳ شروع عملیات: {task_name}...")
try:
yield # کدهای داخل بلوک with اینجا اجرا میشن
finally:
elapsed = time.perf_counter() - start
print(f"✅ پایان عملیات {task_name} | زمان اجرا: {elapsed:.4f} ثانیه")
# استفاده خیلی شیک و خوانا در هر کجای پروژه:
with execution_timer("پردازش دیتاهای سنگین"):
total = sum(i ** 2 for i in range(2_000_000))
🔹 نتیجه: حتی اگه خطایی وسط کد بیفته، بخش
finally اجرا میشه و هیچ ریسورسی (مثل فایل، قفل، یا کانکشن) باز نمیمونه.🐍 @python_rd