یک برنامه پایتون بنویسید که با استفاده از threading.Timer هر 2 ثانیه یک تابع را اجرا کند و پس از 5 بار اجرا خودکار متوقف شده و در هر اجرا شمارهٔ اجرا را چاپ کند.
2.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:41 0.0
برای حل این مسئله یک تابع callback تعریف کنید که شمارهٔ اجرا را چاپ کند و شمارنده را افزایش دهد؛ اگر شمارنده کمتر از 5 بود، در انتهای تابع یک threading.Timer جدید با تاخیر 2 ثانیه ساخته و start() کنید تا اجرای دورهای شبیهسازی شود. شمارنده را میتوان در یک closure یا درون یک کلاس نگهداری کرد؛ برای حفظ ایمنی تردی در دسترسی به شمارنده در صورت نیاز از threading.Lock استفاده کنید. توجه داشته باشید که threading.Timer برای نیازهای سختِ واقعزمانی دقیق مناسب نیست (ریسک drift وجود دارد)، برای کاهش خطا میتوانید از time.monotonic برای محاسبهٔ زمانبندی بعدی استفاده کنید؛ در سامانههای Real-Time یا محیطهای HPC معمولاً باید به تایمرهای با دقت بالاتر یا مکانیزمهای تخصصی توجه کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای اطمینان از دسترسی همزمان به شمارنده، آن را در کلاس یا یک closure نگه دارید و از threading.Lock استفاده کنید. استفاده از threading.Timer به ازای هر اجرای جدید، ممکن است drift زمانی ایجاد کند؛ برای کاهش خطا میتوانید زمانها را با time.monotonic محاسبه کرده و یک تکرار با برنامهریزی دقیقتر پیادهسازی کنید یا از حلقهای با sleep استفاده کنید. در محیطهای Real-Time یا HPC بهتر است از تایمرهای با دقت بالا یا ابزارهای تخصصی استفاده کنید تا دقت اجرای دورهای حفظ شود.
گزارش