فرآیند دیمن (daemon
) در multiprocessing
چیست؟
یک فرآیند دیمن در multiprocessing
، فرآیندی است که در پسزمینه اجرا شده و وابسته به فرآیند اصلی است. این یعنی زمانی که فرآیند اصلی پایان یابد، تمامی فرآیندهای دیمن نیز بهطور خودکار متوقف خواهند شد. برخلاف فرآیندهای معمولی که بهصورت مستقل اجرا میشوند، فرآیندهای دیمن برای انجام وظایف پسزمینهای مثل مانیتورینگ، ثبت لاگ، یا پردازشهای دورهای کاربرد دارند.
چرا از فرآیند دیمن استفاده کنیم؟
- مدیریت خودکار: نیازی به متوقف کردن دستی فرآیند نیست، چون با اتمام برنامه اصلی، خودش متوقف میشود.
- اجرای وظایف پسزمینهای: مانند لاگگیری، بروزرسانی دیتا، یا اجرای پردازشهای مستمر بدون مسدود کردن برنامه اصلی.
- بهینهسازی عملکرد: باعث میشود وظایف غیرضروری در پسزمینه اجرا شوند و عملکرد برنامه اصلی کاهش نیابد.
مثال: فرآیند دیمن که در پسزمینه اجرا میشود
import multiprocessing
import time
def background_task():
while True:
print("Running in background...")
time.sleep(2)
if __name__ == "__main__":
process = multiprocessing.Process(target=background_task)
process.daemon = True # تنظیم فرآیند بهعنوان دیمن
process.start()
time.sleep(5) # اجرای برنامه اصلی
print("Main process exiting...")
عملکرد این کد:
- فرآیند دیمن هر ۲ ثانیه یک پیام را چاپ میکند.
- بعد از ۵ ثانیه، برنامه اصلی تمام شده و فرآیند دیمن نیز متوقف میشود.
تأثیر استفاده از daemon
در برنامهها
- در سیستمهای چندپردازشی، برای اجرای وظایف در پسزمینه بدون تأثیر بر فرآیندهای اصلی استفاده میشود.
- در پردازش داده، میتوان از فرآیندهای دیمن برای دریافت، فیلتر کردن، یا ذخیره اطلاعات در لحظه استفاده کرد.
- در سرورها، میتواند برای پردازشهای دورهای مانند پاکسازی حافظه کش یا بروزرسانی دادهها مفید باشد.
اگر نیاز به یک فرآیند مستقل داشته باشید که بعد از پایان برنامه اصلی همچنان اجرا شود، نباید از daemon
استفاده کنید و باید فرآیند را بهصورت معمولی راهاندازی کنید.