Python - Membuat sebuah Thread
Halo, para programmer Python yang berambisi! Hari ini, kita akan memasuki dunia yang menarik tentang thread. Jangan khawatir jika Anda belum pernah mendengar tentang thread sebelumnya – kita akan memulai dari awal dan bergerak ke atas. Pada akhir tutorial ini, Anda akan membuat thread seperti seorang profesional!
Apa itu Thread?
Sebelum kita melompat ke membuat thread, mari kita mengerti apa itu thread. Bayangkan Anda sedang memasak makanan yang kompleks. Anda tidak melakukan semua hal secara bergantian – Anda mungkin memiliki pasta yang kipas di atas kompor salah satu saat Anda sedang memotong sayuran di atas papan potong. Ini mirip dengan cara kerja thread dalam pemrograman. Mereka memungkinkan bagian yang berbeda dari program Anda untuk berjalan secara bersamaan, membuat kode Anda lebih efisien.
Membuat Thread dengan Fungsi
Cara termudah untuk membuat thread di Python adalah dengan menggunakan fungsi. Mari kita mulai dengan contoh dasar:
import threading
import time
def print_numbers():
for i in range(5):
print(f"Nomor {i}")
time.sleep(1)
# Membuat sebuah thread
thread = threading.Thread(target=print_numbers)
# Memulai thread
thread.start()
print("Thread utama terus berjalan")
# Menunggu thread selesai
thread.join()
print("Thread telah selesai")
Mari kita pecahkan ini:
- Kita mengimpor modul
threading
, yang menyediakan alat yang kita butuhkan untuk bekerja dengan thread. - Kita mendefinisikan fungsi sederhana
print_numbers()
yang mencetak angka dari 0 sampai 4, dengan jeda 1 detik antara setiap cetak. - Kita membuat thread menggunakan
threading.Thread()
, menentukan fungsi kita sebagaitarget
. - Kita memulai thread dengan
thread.start()
. - Program utama terus berjalan, mencetak "Thread utama terus berjalan".
- Kita menggunakan
thread.join()
untuk menunggu thread kita selesai sebelum melanjutkan.
Ketika Anda menjalankan ini, Anda akan melihat bahwa "Thread utama terus berjalan" dicetak segera, sementara angka sedang dicetak di latar belakang. Ini adalah kekuatan threading!
Membuat Thread dengan Menggunakan Kelas Turunan Thread
Cara lain untuk membuat thread adalah dengan menurunkan kelas Thread
. Metode ini berguna ketika Anda ingin membuat objek thread yang dapat digunakan kembali. Berikut adalah contohnya:
import threading
import time
class NumberPrinter(threading.Thread):
def __init__(self, name):
threading.Thread.__init__(self)
self.name = name
def run(self):
for i in range(5):
print(f"{self.name}: Nomor {i}")
time.sleep(1)
# Membuat dua thread
thread1 = NumberPrinter("Thread 1")
thread2 = NumberPrinter("Thread 2")
# Memulai thread
thread1.start()
thread2.start()
print("Thread utama terus berjalan")
# Menunggu kedua thread selesai
thread1.join()
thread2.join()
print("Kedua thread telah selesai")
Dalam contoh ini:
- Kita mendefinisikan kelas
NumberPrinter
yang menurunkanthreading.Thread
. - Kita menimpa metode
__init__
untuk menerima nama untuk thread kita. - Kita menimpa metode
run
, yang dipanggil saat thread dimulai. - Kita membuat dua instance dari kelas
NumberPrinter
kita dan memulainya. - Kedua thread berjalan secara bersamaan, mencetak angkanya.
Metode ini memberikan kita kontrol yang lebih atas thread dan memungkinkan kita untuk membuat beberapa instance dengan mudah.
Membuat Thread menggunakan Fungsi start_new_thread()
Ada cara ketiga untuk membuat thread di Python, yaitu menggunakan fungsi start_new_thread()
dari modul _thread
. Namun, metode ini dianggap tingkat rendah dan tidak direkomendasikan untuk kebanyakan kasus penggunaan. Berikut adalah contohnya untuk kesempurnaan:
import _thread
import time
def print_numbers(thread_name):
for i in range(5):
print(f"{thread_name}: Nomor {i}")
time.sleep(1)
# Memulai dua thread baru
try:
_thread.start_new_thread(print_numbers, ("Thread 1",))
_thread.start_new_thread(print_numbers, ("Thread 2",))
except:
print("Error: tidak dapat memulai thread")
# Menyusun thread utama tetap hidup
time.sleep(6)
print("Thread utama keluar")
Metode ini kurang fleksibel dan tidak menyediakan kontrol yang sama seperti metode sebelumnya. Juga, lebih sulit untuk menunggu thread selesai menggunakan pendekatan ini.
Perbandingan Metode Pembuatan Thread
Berikut adalah perbandingan cepat dari tiga metode yang kita telah diskusikan:
Metode | Keuntungan | Kekurangan |
---|---|---|
Menggunakan Fungsi | Simple untuk mengimplementasikan, baik untuk tugas sekali pakai | Kurang dapat digunakan kembali, kontrol terbatas |
Menggunakan Kelas Turunan Thread | Dapat digunakan kembali, kontrol lebih, berorientasi objek | Agak lebih rumit untuk diatur |
start_new_thread() | Kontrol tingkat rendah | Susah untuk mengelola, kurang fleksibel, tidak direkomendasikan |
Kesimpulan
Selamat! Anda baru saja mengambil langkah pertama Anda ke dalam dunia threading di Python. Kita telah membahas tiga cara berbeda untuk membuat thread, masing-masing dengan keuntungannya dan kasus penggunaannya. Ingat, threading dapat membuat program Anda lebih efisien, tetapi juga memasukkan kompleksitas. Sebagai Anda terus menjelajahi perjalanan Python Anda, Anda akan belajar lebih banyak tentang kapan dan bagaimana untuk menggunakan thread secara efektif.
Terus latihan, dan segera Anda akan threading seperti seorang programmer berpengalaman. Happy coding!
Credits: Image by storyset