Python - Thread Daemon

Halo kepada semua yang berhasrat menjadi pemrogram Python! Hari ini, kita akan melakukan perjalanan yang menarik ke dunia Thread Daemon. Jangan khawatir jika anda baru mengenal pemrograman – saya akan menjadi pemandu anda yang mesra, menjelaskan setiap langkah secara perlahan. Jadi, mari kita melompat masuk!

Python - Daemon Threads

Ringkasan Tentang Thread Daemon

Apa itu Thread Daemon?

Bayangkan anda sedang mengadakan satu peristiwa (program utama anda), dan anda ada dua jenis tetamu: tetamu biasa (thread normal) dan rakit penyusun (thread daemon). Tetamu biasa akan tinggal hingga peristiwa itu tamat, tetapi rakit penyusun secara misterius akan hilang apabila semua tetamu biasa telah pergi. Itulah cara kerja thread daemon di Python!

Dalam terma teknikal, thread daemon adalah thread latar belakang yang tidak menghalang program daripada keluar apabila semua thread non-daemon telah selesai. Mereka berguna untuk tugas-tugas yang harus dijalankan di latar belakang tetapi tidak kritikal untuk program utama.

Kegunaan Utama Thread Daemon

  1. Mereka dijalankan di latar belakang.
  2. Mereka secara automatik akan berakhir apabila semua thread non-daemon selesai.
  3. Mereka tidak menghalang program daripada keluar.
  4. Mereka ideal untuk tugas seperti penyimpanan fail di latar belakang atau pengawasan.

Membuat Thread Daemon di Python

Sekarang, mari kita kenaikan tangan untuk melakukan beberapa kode! Kita akan mula dengan membuat satu thread daemon yang simple.

import threading
import time

def background_task():
while True:
print("Saya adalah thread daemon, bekerja di latar belakang!")
time.sleep(2)

# Membuat satu thread daemon
daemon_thread = threading.Thread(target=background_task, daemon=True)

# Memulakan thread daemon
daemon_thread.start()

# Thread utama
print("Thread utama sedang berjalan...")
time.sleep(5)
print("Thread utama sedang untuk selesai...")

Mari kita pecahkan ini:

  1. Kita import modul threading dan time.
  2. Kita definisikan fungsi background_task() yang mencetak mesej setiap 2 saat.
  3. Kita membuat satu thread baru menggunakan threading.Thread(), menetapkan daemon=True untuk menjadikannya thread daemon.
  4. Kita memulakan thread daemon dengan start().
  5. Thread utama mencetak mesej, tidur selama 5 saat, dan kemudian selesai.

Apabila anda menjalankan kode ini, anda akan lihat mesej thread daemon dicetak beberapa kali, tetapi ia berhenti apabila thread utama selesai. Itulah keajaiban thread daemon!

Menguruskan Atribut Thread Daemon

Memeriksa jika Satu Thread adalah Daemon

Anda boleh memeriksa sama ada satu thread adalah daemon menggunakan kaedah isDaemon():

import threading

def some_function():
pass

thread = threading.Thread(target=some_function, daemon=True)
print(thread.isDaemon())  # Output: True

Menetapkan Atribut Daemon

Anda boleh menetapkan atribut daemon dengan dua cara:

  1. Apabila membuat thread:
daemon_thread = threading.Thread(target=some_function, daemon=True)
  1. Menggunakan kaedah setDaemon():
thread = threading.Thread(target=some_function)
thread.setDaemon(True)

Ingat, anda mesti menetapkan atribut daemon sebelum memulakan thread. Apabila satu thread telah dimulakan, anda tidak boleh mengubah status daemon itu.

Contoh Praktikal: Penyimpanan Fail Di Latar Belakang

Mari kita membuat satu contoh yang lebih praktikal. Bayangkan anda sedang menulis penyunting teks, dan anda mahu secara automatik menyimpan dokumen setiap beberapa saat tanpa mengganggu pengguna.

import threading
import time

class AutoSaver:
def __init__(self):
self.content = ""
self.daemon_thread = threading.Thread(target=self.auto_save, daemon=True)
self.daemon_thread.start()

def auto_save(self):
while True:
if self.content:
print(f"Penyimpanan automatik: {self.content}")
# Di atas aplikasi sebenar, anda akan menyimpan ke fail di sini
time.sleep(3)

def write(self, text):
self.content += text

# Penggunaan
editor = AutoSaver()
editor.write("Hello, ")
time.sleep(2)
editor.write("world!")
time.sleep(5)
print("Keluar dari penyunting...")

Dalam contoh ini:

  1. Kita membuat kelas AutoSaver dengan satu thread daemon yang menjalankan kaedah auto_save.
  2. Kaedah auto_save memeriksa kandungan setiap 3 saat dan "menyimpan" ia (dalam hal ini, hanya mencetak).
  3. Kaedah write menyimulasikan penulisan ke dokumen.

Apabila anda menjalankan ini, anda akan lihat mesej penyimpanan automatik muncul di latar belakang sementara anda "menulis" ke dokumen. Thread daemon secara automatik berhenti apabila program utama keluar.

Kesimpulan

Tahniah! Anda baru saja belajar tentang thread daemon di Python. rakit penyusun ini boleh menjadi sangat berguna untuk tugas-tugas latar belakang di atas program anda. Ingat, seperti rakit penyusun peristiwa kami, mereka bekerja dengan senyap di latar belakang dan hilang apabila peristiwa utama (program) tamat.

Apabila anda teruskan perjalanan Python anda, anda akan menemui banyak lagi fitur yang menarik untuk dijelajahi. Teruskan untuk mengkod, tetap curious, dan happy threading!

Method Keterangan
threading.Thread(target=function, daemon=True) Membuat satu thread daemon baru
thread.start() Memulakan thread
thread.isDaemon() Memeriksa jika thread adalah daemon
thread.setDaemon(True) Menetapkan thread sebagai daemon (sebelum memulakan)

Ingat, dengan kuasa besar datang tanggungjawab besar. Gunakan thread daemon dengan bijak, dan mereka akan menjadi rakit penyusun penyertaan coding anda yang setia!

Credits: Image by storyset