تمرینات ماژول threading – کلاس Timer

Please login to bookmark Close

تمرین ۱ – گرم‌کن هوشمند

کدی که در ادامه می‌بینید، سیستم خاموشی خودکار یک هیتر را شبیه‌سازی می‌کند. در این کد از time.sleep برای ایجاد وقفه ۵ ثانیه‌ای استفاده شده است. اگر کد را اجرا کنید و قبل از اتمام زمان، سریعاً کلمه off را تایپ کنید تا هیتر دستی خاموش شود، متوجه یک باگ آزاردهنده می‌شوید: برنامه بلافاصله بسته نمی‌شود و سیستم تا پایان آن ۵ ثانیه گیر می‌کند (و در نهایت پیام خاموشی خودکار هم به اشتباه چاپ می‌شود!). هدف این تمرین این است که شما این مشکلِ درگیری منابع را برطرف کنید. وظیفه شما این است که ساختار این کد را تغییر دهید و به جای استفاده از Thread و time.sleep، از کلاس threading.Timer استفاده کنید؛ به طوری که اگر کاربر کلمه off را تایپ کرد، بتوانید زمان‌سنجِ پس‌زمینه را در همان لحظه لغو (Cancel) کنید تا برنامه فوراً و بدون هیچ معطلی پایان یابد

import threading
import time

def auto_off():
    # Waiting for 5 seconds
    time.sleep(5)
    print("\n[System] Auto-off triggered.")

print("Heater is ON. It will auto-off in 5 seconds.")

# Start background thread
t = threading.Thread(target=auto_off)
t.start()

# Wait for user input
command = input("Type 'off' to turn it off manually: ")

if command == 'off':
    print("User typed off. Exiting program...")
    # BUG: The program will NOT exit immediately! 
    # Python will wait for the time.sleep(5) to finish.
Please login to bookmark Close
نظرات

دیدگاهتان را بنویسید

فهرست مطالب

سرفصل دوره

تمرین

این قسمت تمرین ندارد!

پاسخ تمرین ها

هنوز برای تمرین‌های این قسمت پاسخی ثبت نشده است!

اشتراک گذاری

چرا بهتره از فیلترشکن استفاده کنید؟

من همه ویدئو ها و پادکست های کُدباز رو توی یوتیوب و ساندکلود و پلتفرم هایی آپلود می‌کنم که اغلب فیلتر هستند.

اغلب آموزش‌ها ویدئو و پادکست دارند. پس اگر می‌خواهید از محتوای سایت بیشترین استفاده رو ببرید نیاز به فیلتر شکن دارید.

توجه داشته باشید که برای خرید از فروشگاه بهتره فیلتر شکن رو خاموش کنید.

تنظیمات

انتخاب زبان
تغییر تم