Python - Membuat satu Thread
Hai, pemrogram Python yang aspiratif! Hari ini, kita akan menyelam ke atas dunia yang menarik tentang thread. Jangan khawatir jika anda belum pernah mendengar tentang thread sebelum ini – kita akan memulai dari permulaan dan bekerja ke atas. Pada akhir tutorial ini, anda akan membuat thread seperti seorang profesional!
Apa itu Thread?
Sebelum kita melompat ke dalam membuat thread, mari kita faham apa itu thread. Bayangkan anda sedang memasak makanan yang kompleks. Anda tidak melakukan semua kerja secara berurutan – anda mungkin memasak pasta di atas rak api satu sementara anda sedang menghias sayuran di atas papan penyunting. Ini adalah seperti cara kerja thread dalam pemrograman. Mereka membenarkan bahagian-bahagian yang berbeza dari program anda untuk dijalankan secara serentak, membuat kod anda lebih efisien.
Membuat Thread dengan Fungsi
Cara termudah untuk membuat thread di Python adalah dengan menggunakan fungsi. Mari kita mulakan dengan contoh yang basic:
import threading
import time
def cetak_nombor():
for i in range(5):
print(f"Nombor {i}")
time.sleep(1)
# Membuat satu thread
thread = threading.Thread(target=cetak_nombor)
# Memulakan thread
thread.start()
print("Utama thread terus berjalan")
# Menunggu thread untuk selesai
thread.join()
print("Thread telah selesai")
Mari kita kongsi ini:
- Kita import modul
threading
, yang menyediakan alat-alat yang kita perlukan untuk bekerja dengan thread. - Kita definisikan fungsi
cetak_nombor()
yang mudah yang mencetak nombor dari 0 hingga 4, dengan jeda 1 saat di antara setiap cetak. - Kita membuat thread menggunakan
threading.Thread()
, menetapkan fungsi kita sebagaitarget
. - Kita memulakan thread dengan
thread.start()
. - Program utama terus berjalan, mencetak "Utama thread terus berjalan".
- Kita gunakan
thread.join()
untuk menunggu thread kita selesai sebelum meneruskan.
Apabila anda menjalankan ini, anda akan lihat bahwa "Utama thread terus berjalan" dicetak segera, sementara nombor-nombor sedang dicetak di belakang. Ini adalah kuasa threading!
Membuat Thread dengan Mengextends Kelas Thread
Cara lain untuk membuat thread adalah dengan mengextends kelas Thread
. Cara ini berguna apabila anda mahu membuat objek thread yang dapat digunakan kembali. Di sini ada contoh:
import threading
import time
class PencetakNombor(threading.Thread):
def __init__(self, nama):
threading.Thread.__init__(self)
self.nama = nama
def run(self):
for i in range(5):
print(f"{self.nama}: Nombor {i}")
time.sleep(1)
# Membuat dua thread
thread1 = PencetakNombor("Thread 1")
thread2 = PencetakNombor("Thread 2")
# Memulakan thread
thread1.start()
thread2.start()
print("Utama thread terus berjalan")
# Menunggu kedua-dua thread untuk selesai
thread1.join()
thread2.join()
print("Kedua-dua thread telah selesai")
Dalam contoh ini:
- Kita definisikan kelas
PencetakNombor
yang mengextendsthreading.Thread
. - Kita menimpa method
__init__
untuk menerima nama bagi thread kita. - Kita menimpa method
run
, yang dipanggil apabila thread dimulakan. - Kita membuat dua instance bagi kelas
PencetakNombor
dan memulakannya. - Kedua-dua thread dijalankan secara serentak, mencetak nombor mereka.
Cara ini memberikan kita lebih kontrol atas thread dan membenarkan kita untuk membuat beberapa instance dengan mudah.
Membuat Thread menggunakan fungsi start_new_thread()
Terdapat cara ketiga untuk membuat thread di Python, menggunakan fungsi start_new_thread()
dari modul _thread
. Walau bagaimanapun, cara ini dianggap level rendah dan tidak dianjurkan untuk kebanyakan kesgunaan. Di sini ada contoh untuk keengkapannya:
import _thread
import time
def cetak_nombor(thread_nama):
for i in range(5):
print(f"{thread_nama}: Nombor {i}")
time.sleep(1)
# Memulakan dua thread baru
try:
_thread.start_new_thread(cetak_nombor, ("Thread 1",))
_thread.start_new_thread(cetak_nombor, ("Thread 2",))
except:
print("Ralat: tidak dapat memulakan thread")
# Mengekalkan utama thread hidup
time.sleep(6)
print("Utama thread keluar")
Cara ini kurang fleksibel dan tidak memberikan kontrol yang sama seperti cara sebelumnya. Ini juga lebih sukar untuk menunggu thread untuk selesai menggunakan pendekatan ini.
Perbandingan Method Penciptaan Thread
Berikut adalah perbandingan cepat bagi tiga method yang kita telah diskusikan:
Method | Kelebihan | Kekurangan |
---|---|---|
Menggunakan Fungsi | Mudah untuk melaksanakan, baik untuk kerja sekaliguna | Kurang dapat digunakan kembali, kontrol terhad |
Mengextends Kelas Thread | Dapat digunakan kembali, lebih kontrol, berorientasi objek | Sedikit lebih kompleks untuk diatur |
start_new_thread() | Kontrol level rendah | Susah untuk mengurus, kurang fleksibel, tidak dianjurkan |
Kesimpulan
Tahniah! Anda baru saja mengambil langkah pertama anda ke atas dunia threading di Python. Kita telah membahas tiga cara yang berbeza untuk membuat thread, masing-masing dengan kelebihannya dan kesgunaannya. Ingat, threading boleh membuat program anda lebih efisien, tetapi juga memasukkan kompleksitas. Apabila anda teruskan perjalanan Python anda, anda akan belajar lebih tentang kapan dan bagaimana untuk menggunakan thread secara efektif.
Teruskan untuk berlatih, dan tidak lama lagi anda akan threading seperti seorang pemrogram keterampilan. Happy coding!
Credits: Image by storyset