Python - Penjadwalan Thread
Halo semua, masa depan maestros Python! Hari ini, kita akan memasuki dunia yang menarik tentang penjadwalan thread di Python. Jangan khawatir jika Anda baru mengenal pemrograman; saya akan memandu Anda melalui perjalanan ini langkah demi langkah, seperti yang saya lakukan untuk banyak mahasiswa selama tahun tahun mengajar saya. Mari kita mulai petualangan yang menarik ini bersama!
Mengerti Threads
Sebelum kita melompat ke penjadwalan, mari kita singkatkan apa itu threads. Bayangkan Anda membaca sebuah buku sambil mendengarkan musik. Otak Anda secara efektif menjalankan dua "thread" secara bersamaan - satu untuk membaca dan satu untuk mendengarkan. Dalam pemrograman, threads bekerja secara serupa, memungkinkan sebuah program untuk melakukan banyak tugas secara bersamaan.
Penjadwalan Threads menggunakan Kelas Timer
Sekarang, mari kita eksplorasi metode pertama penjadwalan threads: kelas Timer. Ini seperti mengatur alarm untuk kode Anda!
Apa itu Kelas Timer?
Kelas Timer adalah bagian dari modul threading
di Python. Ini memungkinkan Anda untuk menjadwalkan sebuah fungsi untuk dijalankan setelah jeda yang ditentukan. Pernahkah Anda mengatakan kepada Python, "Hai, jalankan tugas ini untuk saya, tapi tunggu sebentar sebelum Anda memulainya!"
Cara Menggunakan Kelas Timer
Mari kita lihat contoh sederhana:
import threading
import time
def sapa(nama):
print(f"Halo, {nama}! Waktu saat ini adalah {time.strftime('%H:%M:%S')}")
# Membuat objek Timer
t = threading.Timer(5, sapa, args=["Alice"])
# Memulai timer
t.start()
print("Timer dimulai!")
# Menunggu timer selesai
t.join()
print("Timer selesai!")
Mari kita pecahkan ini:
- Kita mengimpor modul yang diperlukan:
threading
dantime
. - Kita mendefinisikan fungsi
sapa
sederhana yang mencetak ucapan dengan waktu saat ini. - Kita membuat objek Timer, memberitahu itu untuk menjalankan fungsi
sapa
setelah jeda 5 detik, melewatkan "Alice" sebagai argumen. - Kita memulai timer dengan
t.start()
. - Kita menggunakan
t.join()
untuk menunggu timer selesai sebelum melanjutkan.
Ketika Anda menjalankan ini, Anda akan melihat "Timer dimulai!" dicetak segera, kemudian setelah jeda 5 detik, Anda akan melihat ucapan, diikuti dengan "Timer selesai!".
Membatalkan Timer
Terkadang, Anda mungkin perlu membatalkan tugas yang dijadwalkan. Ini seperti memutuskan Anda tidak perlu alarm tersebut. Ini caranya:
import threading
import time
def tugas():
print("Tugas ini tidak akan dijalankan!")
t = threading.Timer(5, tugas)
t.start()
print("Timer dimulai, tapi kita akan membatalkannya...")
time.sleep(2) # Tunggu selama 2 detik
t.cancel() # Batalkan timer
print("Timer dibatalkan!")
Dalam contoh ini, kita menjadwalkan sebuah tugas tapi kemudian membatalkannya sebelum itu memiliki kesempatan untuk dijalankan.
Penjadwalan Threads menggunakan Modul sched
Sekarang, mari kita naik level dan lihat modul sched
. Jika kelas Timer seperti alarm pribadi sederhana, modul sched
seperti aplikasi penjadwalan yang lengkap!
Apa itu Modul sched?
Modul sched
memungkinkan Anda untuk menjadwalkan banyak kejadian untuk terjadi pada waktu tertentu. Ini sempurna untuk saat Anda memerlukan penjadwalan yang lebih kompleks daripada jeda sederhana.
Cara Menggunakan Modul sched
Mari kita lihat contoh:
import sched
import time
# Membuat objek scheduler
s = sched.scheduler(time.time, time.sleep)
def print_time(nama):
print(f"Halo, {nama}! Waktu saat ini adalah {time.strftime('%H:%M:%S')}")
# Menjadwalkan beberapa kejadian
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("Scheduler dimulai!")
s.run()
print("Scheduler selesai!")
Mari kita pecahkan ini:
- Kita membuat objek scheduler menggunakan
sched.scheduler()
. - Kita mendefinisikan fungsi
print_time
sederhana. - Kita menjadwalkan tiga kejadian menggunakan
s.enter()
:
- Argumen pertama adalah jeda dalam detik.
- Argumen kedua adalah prioritas (angka lebih rendah = prioritas lebih tinggi).
- Argumen ketiga adalah fungsi untuk dijalankan.
- Kata kunci
argument
memungkinkan kita untuk melewatkan argumen ke fungsi.
- Kita memulai scheduler dengan
s.run()
.
Ketika Anda menjalankan ini, Anda akan melihat ucapan dicetak pada interval 2 detik.
Membatalkan Kejadian yang Dijadwalkan
Sama seperti dengan Timer, Anda dapat membatalkan kejadian yang dijadwalkan di sched
:
import sched
import time
s = sched.scheduler(time.time, time.sleep)
def tugas(nama):
print(f"Halo, {nama}!")
event1 = s.enter(2, 1, tugas, argument=("Alice",))
event2 = s.enter(4, 1, tugas, argument=("Bob",))
print("Kejadian dijadwalkan. Membatalkan kejadian Bob...")
s.cancel(event2)
s.run()
print("Scheduler selesai!")
Dalam contoh ini, kita menjadwalkan dua kejadian tapi membatalkan yang kedua sebelum menjalankan scheduler.
Perbandingan Timer dan sched
Berikut adalah perbandingan cepat antara dua metode yang kita pelajari:
Fitur | Timer | sched |
---|---|---|
Kemudahan penggunaan | Sederhana, langsung | Lebih kompleks, tapi lebih kuat |
Beberapa kejadian | Satu pada satu waktu | Dapat menjadwalkan banyak kejadian |
Presisi | Kurang presisi | Lebih presisi |
Pembatalan | Dapat membatalkan sebelum eksekusi | Dapat membatalkan kapan saja |
kasus penggunaan | Jeda sederhana | Kebutuhan penjadwalan kompleks |
Kesimpulan
Dan itu untuk saat ini, teman-teman! Kita telah melakukan perjalanan melalui dunia penjadwalan thread di Python, dari kelas Timer yang sederhana ke modul sched
yang lebih kompleks. Ingat, seperti belajar untuk bersepeda, menguasai konsep ini memerlukan praktek. Jadi jangan takut untuk bereksperimen dan membuat kesalahan - itulah cara kita belajar!
Selama tahun tahun mengajar, saya telah melihat mahasiswa yang beralih dari pemula menjadi ahli Python, dan saya tidak punya keraguan bahwa Anda dapat melakukan hal yang sama. Tetap kode, terus belajar, dan yang paling penting, bersenang-senanglah dengan itu!
Sampai jumpa lagi, happy coding!
Credits: Image by storyset