یک دکوراتور ساده در پایتون با استفاده از functools.wraps بنویسید که زمان اجرای توابع عددی (مثلاً محاسبهٔ جمع دنبالهها یا عملیات ماتریسی) را اندازهگیری، نام تابع و زمان را چاپ کند و مقدار اصلی را بازگرداند.
8.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 03:13 0.0
برای حل، یک دکوراتور بسازید که از functools.wraps برای حفظ متادیتا استفاده کند؛ در درون wrapper از time.perf_counter() قبل و بعد از صدا زدن تابع برای محاسبهٔ مدت زمان استفاده کنید، نتیجهٔ تابع را ذخیره و سپس آن را چاپ و بازگردانید. این روش برای کدهای محاسباتی با numpy یا اسکریپتهای اتوماسیون مفید است — نکتهها: از wraps برای حفظ __name__ و __doc__ بهره ببرید، برای لاگگیری در پروژههای بزرگ از ماژول logging به جای print استفاده کنید و در صورت نیاز از آرگومانهای تابع در چاپ جهت دیباگ استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
استفاده از functools.wraps در این دکورATOR برای حفظ __name__ و __doc__ و میتادیتا کمک میکند و اندازهگیری زمان با time.perf_counter دقیق است. بهتر است در پروژههای واقعی به جای print از logging استفاده کنید تا لاگها قابل مدیریت باشند. اگر برای دیباگ نیاز دارید، میتوانید آرگومانهای ورودی تابع را نیز در چاپ زمان نمایش دهید یا از قالببندی منظمتری استفاده کنید. به یاد داشته باشید که اندازهگیری زمان ممکن است هزینهای روی کارکرد تابع بگذارد و در کدهای numpy یا محاسبات ماتریسی به پهنهبندی و همروندی توجه کنید.
گزارش