استفاده از daemon در Threading

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1403/12/29
  • تعداد بازدید: 16

پیوست های این درس:


استفاده از daemon در Threading

در پایتون، ویژگی daemon برای نخ‌ها (threads) به کار می‌رود و مشخص می‌کند که آیا نخ باید به‌طور خودکار هنگام پایان یافتن برنامه خاتمه یابد یا خیر. نخ‌های daemon به نخ‌هایی اطلاق می‌شود که به صورت خودکار وقتی برنامه اصلی (main program) به اتمام رسید، متوقف می‌شوند، بدون اینکه نیاز به منتظر ماندن برای اتمام آن‌ها باشد.

ویژگی‌های نخ‌های daemon:

  1. خاتمه خودکار: نخ‌های daemon هنگامی که برنامه اصلی خاتمه می‌یابد، بدون منتظر ماندن برای اتمام کارشان، به صورت خودکار خاتمه می‌یابند.
  2. کاربرد برای فرآیندهای پشتیبان: از نخ‌های daemon معمولاً برای انجام کارهایی مانند نظارت یا فرآیندهای پس‌زمینه استفاده می‌شود که نیاز به اتمام دقیق ندارند.
  3. تنظیم قبل از شروع: ویژگی daemon باید قبل از فراخوانی start() برای نخ تنظیم شود. اگر بعد از شروع نخ تنظیم شود، خطا خواهد داد.
  4. تفاوت با نخ‌های معمولی: نخ‌های غیر daemon به طور پیش‌فرض به برنامه اجازه می‌دهند تا زمانی که به‌طور کامل خاتمه یابند، منتظر بمانند تا تمام نخ‌ها به پایان برسند.

چگونگی استفاده از daemon

برای تنظیم یک نخ به‌عنوان daemon، می‌توانید ویژگی daemon را به‌طور مستقیم روی شیء نخ تنظیم کنید.

ساختار استفاده از daemon:

thread = threading.Thread(target=your_function)
thread.daemon = True  # تنظیم نخ به عنوان daemon
thread.start()

مثال: استفاده از نخ‌های daemon

در این مثال، یک نخ daemon داریم که به طور مداوم زمان را چاپ می‌کند و نخ اصلی فقط بعد از چند ثانیه تمام می‌شود، در حالی که نخ daemon به طور خودکار قطع می‌شود.

import threading
import time

# تابع برای نخ daemon
def print_time():
    while True:
        print("زمان جاری:", time.ctime())
        time.sleep(1)

# ایجاد و تنظیم نخ daemon
daemon_thread = threading.Thread(target=print_time)
daemon_thread.daemon = True  # نخ به عنوان daemon
daemon_thread.start()

# برنامه اصلی تنها چند ثانیه اجرا می‌شود
time.sleep(5)
print("برنامه اصلی تمام شد.")

شرح مثال:

  • نخ daemon_thread هر یک ثانیه زمان جاری را چاپ می‌کند.
  • با تنظیم daemon_thread.daemon = True، نخ به صورت daemon تنظیم می‌شود.
  • پس از ۵ ثانیه اجرای برنامه اصلی، برنامه خاتمه می‌یابد، و چون نخ daemon است، به صورت خودکار متوقف می‌شود.

نکات مهم:

  • نخ‌های daemon زمانی مفید هستند که بخواهید کارهایی مانند نظارت یا انجام عملیات پس‌زمینه انجام دهید که پایان آن‌ها برای برنامه اصلی اهمیت ندارد.
  • در صورتی که برنامه اصلی تمام شود و نخ‌های daemon هنوز در حال اجرا باشند، آن‌ها به‌طور خودکار خاتمه می‌یابند.
  • نخ‌های غیر daemon همیشه منتظر می‌مانند تا به طور کامل اتمام یابند، به همین دلیل اگر بخواهید کنترل کاملی روی زمانی که نخ‌ها تمام می‌شوند داشته باشید، بهتر است از نخ‌های معمولی استفاده کنید.

نتیجه‌گیری

نخ‌های daemon یک ویژگی مفید برای انجام عملیات پس‌زمینه هستند که نیازی به اتمام دقیق ندارند و به‌طور خودکار هنگام پایان یافتن برنامه اصلی خاتمه می‌یابند. این ویژگی به شما کمک می‌کند تا نخ‌ها را به‌طور کارآمد و بدون نیاز به مدیریت دستی خاتمه آن‌ها، برای کارهای نظارتی یا پس‌زمینه‌ای تنظیم کنید.

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است می توانید اولین نفر باشید