কম্পিউটার টিউটোরিয়াল

পাইথনে Timer অবজেক্ট (threading.Timer) ব্যবহার


Timer কী?

threading.Timer হলো Thread সাবক্লাস যা নির্দিষ্ট সময় পর একটি ফাংশন একবার এক্সিকিউট করে। শিডিউলড টাস্কের জন্য আদর্শ।

সিনট্যাক্স


threading.Timer(interval, function, args=None, kwargs=None)
  • interval — সেকেন্ডে বিলম্ব (ফ্লোট)
  • function — কলব্যাক ফাংশন
  • args — পজিশনাল আর্গুমেন্টস (টাপল)
  • kwargs — কিওয়ার্ড আর্গুমেন্টস (ডিক্ট)

বেসিক উদাহরণ


import threading

def my_timer():
    print("Python Program")

print("Bye")
timer = threading.Timer(3.0, my_timer)
timer.start()

# আউটপুট:
# Bye
# (৩ সেকেন্ড পর)
# Python Program

টাইমার ক্যান্সেল করা


import threading

def my_timer():
    print("Python Program")

timer = threading.Timer(3.0, my_timer)
timer.start()

print("Cancelling timer...")
timer.cancel()  # ৩ সেকেন্ডের আগে ক্যান্সেল করলে রান হবে না

print("Bye")
# আউটপুট:
# Cancelling timer...
# Bye

রিপিটিং টাইমার (Recurring Timer)

Timer একবারই রান করে। বারবার রান করার জন্য রিকার্শিভ Timer বা sched মডিউল ব্যবহার করুন।


import threading

def recurring_timer(interval, func, *args, **kwargs):
    def wrapper():
        func(*args, **kwargs)
        # আবার শিডিউল
        threading.Timer(interval, wrapper).start()
    # প্রথমবার শুরু
    threading.Timer(interval, wrapper).start()

# ব্যবহার
def print_hello():
    print("Hello!")

recurring_timer(2.0, print_hello)
# প্রতি ২ সেকেন্ডে "Hello!" প্রিন্ট হবে
# বন্ধ করতে প্রোগ্রাম টার্মিনেট করুন বা ফ্ল্যাগ ব্যবহার করুন

সাবধানতা

  • Timer থ্রেড ডেমন (daemon) ডিফল্টে False, তাই প্রোগ্রাম টাইমার রান হওয়া পর্যন্ত এক্সিট করবে না।
  • ডেমন থ্রেড চাইলে: timer.daemon = True সেট করুন start()-এর আগে।
  • এক্সেপশন হ্যান্ডলিং: Timer-এ এক্সেপশন সাইলেন্টলি ফেইল হয়। wrapper ফাংশনে try/except ব্যবহার করুন।

বিকল্প: sched মডিউল


import sched, time

scheduler = sched.scheduler(time.time, time.sleep)

def task(name):
    print(f"Task {name} at {time.ctime()}")

scheduler.enter(2, 1, task, ('A',))
scheduler.enter(5, 1, task, ('B',))
scheduler.run()
  1. পাইথনে ফাইল অবজেক্ট: ফাইল পড়া, লিখা এবং ম্যানেজমেন্টের সম্পূর্ণ গাইড

  2. পাইথন ডিকশনারি ভিউ অবজেক্টগুলো কী

  3. পাইথন ফাংশন কি অবজেক্ট?

  4. পাইথন এবং Boto3 দিয়ে সহজে S3 অবজেক্ট রিট্রিভ করুন: ধাপে ধাপে গাইড