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!

Python - Creating a Thread

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:

  1. Kita mengimpor modul threading, yang menyediakan alat yang kita butuhkan untuk bekerja dengan thread.
  2. Kita mendefinisikan fungsi sederhana print_numbers() yang mencetak angka dari 0 sampai 4, dengan jeda 1 detik antara setiap cetak.
  3. Kita membuat thread menggunakan threading.Thread(), menentukan fungsi kita sebagai target.
  4. Kita memulai thread dengan thread.start().
  5. Program utama terus berjalan, mencetak "Thread utama terus berjalan".
  6. 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:

  1. Kita mendefinisikan kelas NumberPrinter yang menurunkan threading.Thread.
  2. Kita menimpa metode __init__ untuk menerima nama untuk thread kita.
  3. Kita menimpa metode run, yang dipanggil saat thread dimulai.
  4. Kita membuat dua instance dari kelas NumberPrinter kita dan memulainya.
  5. 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