Python - Penjadualan Thread
Halo kepada semua, pakar Python masa depan! Hari ini, kita akan menyelam ke atas dunia yang menarik tentang penjadualan thread di Python. Jangan khawatir jika anda baru mengenali pemrograman; saya akan membimbing anda melalui perjalanan ini langkah demi langkah, sama seperti yang saya lakukan untuk pelbagai pelajar selama tahun tahun pengajaran saya. Mari kita mulakan pengalaman yang menarik ini bersama-sama!
Mengenali Thread
Sebelum kita melompat ke penjadualan, mari kita secara cepat mengingatkan diri tentang apa itu thread. Bayangkan anda membaca sebuah buku sambil mendengarkan musik. Otak anda secara essensial menjalankan dua "thread" secara serentak - satu untuk membaca dan satu lagi untuk mendengarkan. Dalam pemrograman, thread bekerja secara serupa, membenarkan sebuah program untuk melakukan pelbagai tugas secara serentak.
Penjadualan Thread menggunakan Klassen Timer
Sekarang, mari kita eksplorasi metode pertama penjadualan thread: kelas Timer. Ia seperti mengatur rakaman untuk kod anda!
Apa itu Kelas Timer?
Kelas Timer adalah sebahagian dari modul threading
di Python. Ia membenarkan anda untuk menjadualkan fungsi untuk dijalankan setelah masa tunda yang dinyatakan. Bayangkan seperti anda memberitahu Python, "Hey, jalankan tugas ini untuk saya, tapi tunggu sebentar sebelum anda mula!"
Cara Menggunakan Kelas Timer
Mari kita lihat contoh yang simple:
import threading
import time
def greet(name):
print(f"Halo, {name}! Masa sekarang adalah {time.strftime('%H:%M:%S')}")
# Membuat objek Timer
t = threading.Timer(5, greet, args=["Alice"])
# Memulakan pemasa
t.start()
print("Pemasa dimulakan!")
# Menunggu pemasa untuk selesai
t.join()
print("Pemasa selesai!")
Mari kita kongsi penyusunan ini:
- Kita import modul yang diperlukan:
threading
dantime
. - Kita define fungsi
greet
yang simple untuk mencetak ucapan dengan masa sekarang. - Kita membuat objek Timer, memberitahu ia untuk menjalankan fungsi
greet
setelah tunda 5 saat, melepaskan "Alice" sebagai argumen. - Kita mulakan pemasa dengan
t.start()
. - Kita gunakan
t.join()
untuk menunggu pemasa untuk selesai sebelum melanjutkan.
Apabila anda menjalankan ini, anda akan lihat "Pemasa dimulakan!" dicetak segera, kemudian setelah tunda 5 saat, anda akan lihat ucapan, diikuti dengan "Pemasa selesai!".
Pembatalan Pemasa
Bila-bila masa, anda mungkin perlu untuk membatalkan tugas yang dijadualkan. Ia seperti memutuskan anda tidak perlu rakaman itu. Ini cara caranya:
import threading
import time
def task():
print("Tugas ini tidak akan dijalankan!")
t = threading.Timer(5, task)
t.start()
print("Pemasa dimulakan, tetapi kita akan membatalkannya...")
time.sleep(2) # Tunggu untuk 2 saat
t.cancel() # Batalkan pemasa
print("Pemasa dibatalkan!")
Dalam contoh ini, kita menjadualkan tugas tetapi kemudian membatalkannya sebelum ia menjalankan.
Penjadualan Thread menggunakan Modul sched
Sekarang, mari kita naik taraf dan lihat modul sched
. Jika kelas Timer adalah seperti rakaman pukul simple, modul sched
adalah seperti aplikasi penjadualan yang berkelas!
Apa itu Modul sched?
Modul sched
membenarkan anda untuk menjadualkan pelbagai acara untuk berlaku pada masa yang dinyatakan. Ia adalah sempurna untuk saat anda memerlukan penjadualan yang lebih kompleks daripada tunda yang simple.
Cara Menggunakan Modul sched
Mari kita lihat contoh:
import sched
import time
# Membuat objek penjadual
s = sched.scheduler(time.time, time.sleep)
def print_time(name):
print(f"Halo, {name}! Masa sekarang adalah {time.strftime('%H:%M:%S')}")
# Menjadualkan beberapa acara
s.enter(2, 1, print_time, argument=("Alice",))
s.enter(4, 2, print_time, argument=("Bob",))
s.enter(6, 3, print_time, argument=("Charlie",))
print("Penjadual dimulakan!")
s.run()
print("Penjadual selesai!")
Mari kita kongsi penyusunan ini:
- Kita membuat objek penjadual menggunakan
sched.scheduler()
. - Kita define fungsi
print_time
yang simple. - Kita menjadualkan tiga acara menggunakan
s.enter()
:
- Argumen pertama adalah tunda dalam saat.
- Kedua adalah prioriti (nombor yang lebih rendah = prioriti yang lebih tinggi).
- Ketiga adalah fungsi untuk dijalankan.
- Kata kunci
argument
membenarkan kita untuk melepaskan argumen kepada fungsi.
- Kita mulakan penjadual dengan
s.run()
.
Apabila anda menjalankan ini, anda akan lihat ucapan dicetak setiap 2 saat.
Pembatalan Acara yang Dijadualkan
Sama seperti dengan Timer, anda boleh membatalkan acara yang dijadualkan di sched
:
import sched
import time
s = sched.scheduler(time.time, time.sleep)
def task(name):
print(f"Halo, {name}!")
event1 = s.enter(2, 1, task, argument=("Alice",))
event2 = s.enter(4, 1, task, argument=("Bob",))
print("Acara dijadualkan. Membatalkan acara Bob...")
s.cancel(event2)
s.run()
print("Penjadual selesai!")
Dalam contoh ini, kita menjadualkan dua acara tetapi membatalkan yang kedua sebelum menjalankan penjadual.
Perbandingan Timer dan sched
Berikut adalah perbandingan cepat antara dua metode yang kita telah pelajari:
Ciri | Timer | sched |
---|---|---|
Kemudahan penggunaan | Simple, jelas | Lebih kompleks, tetapi lebih kuat |
Pelbagai acara | Satu pada satu masa | Boleh menjadualkan pelbagai acara |
Keterampilan | Kurang keterampilan | Lebih keterampilan |
Pembatalan | Boleh dibatalkan sebelum pelaksanaan | Boleh dibatalkan pada bila-bila masa |
Kegunaan kasus | Tunda simple | Kebutuhan penjadualan kompleks |
Penutup
Dan itu tadi, semua! Kita telah menjelajahi dunia penjadualan thread di Python, dari kelas Timer yang simple ke modul sched
yang lebih kompleks. Ingat, seperti untuk belajar untuk mengendarai rakit, menguasai konsep ini memerlukan latihan. Jadi, jangan takut untuk untuk bereksperimen dan membuat kesilapan - itulah cara kita belajar!
Selama tahun tahun pengajaran saya, saya telah melihat pelajar yang beralih dari pemula kepada pakar Python, dan saya tidak ragu bahawa anda boleh melakukan yang sama. Teruskan untuk mengkod, teruskan untuk belajar, dan yang paling penting, bersenang-senanglah dengan itu!
Sampai jumpa lagi, happy coding!
Credits: Image by storyset