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!

Python - Creating a Thread

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:

  1. Kita import modul threading, yang menyediakan alat-alat yang kita perlukan untuk bekerja dengan thread.
  2. Kita definisikan fungsi cetak_nombor() yang mudah yang mencetak nombor dari 0 hingga 4, dengan jeda 1 saat di antara setiap cetak.
  3. Kita membuat thread menggunakan threading.Thread(), menetapkan fungsi kita sebagai target.
  4. Kita memulakan thread dengan thread.start().
  5. Program utama terus berjalan, mencetak "Utama thread terus berjalan".
  6. 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:

  1. Kita definisikan kelas PencetakNombor yang mengextends threading.Thread.
  2. Kita menimpa method __init__ untuk menerima nama bagi thread kita.
  3. Kita menimpa method run, yang dipanggil apabila thread dimulakan.
  4. Kita membuat dua instance bagi kelas PencetakNombor dan memulakannya.
  5. 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