Ketika kita ngomongin soal coding yang lebih cepat dan efisien, “pemrograman paralel” adalah salah satu topik yang wajib banget kamu eksplorasi. Dalam dunia Python, ada dua cara populer buat ngejalanin tugas secara paralel: multithreading dan multiprocessing. Jadi, kalau kamu lagi cari cara buat nge-boost performa kode Python-mu, artikel ini pas banget buat kamu.


Apa Itu Pemrograman Paralel?

Sederhananya, pemrograman paralel itu adalah teknik buat ngejalanin beberapa tugas secara bersamaan. Bayangin aja kamu lagi masak mie instan sambil nonton YouTube. Kamu nggak harus nunggu air mendidih dulu buat mulai buka aplikasinya, kan? Itulah inti dari paralelisme: efisiensi waktu!

Dalam Python, kita punya dua alat utama buat ngelakuin ini:

  1. Multithreading
  2. Multiprocessing

Tapi, kapan sih kita harus pake yang mana? Yuk, kita bahas lebih dalam.


Multithreading: Buat Tugas yang Ringan-Ringan

Multithreading adalah cara ngejalanin beberapa “thread” secara bersamaan di dalam satu proses. Ini cocok buat tugas-tugas yang IO-bound kayak ngakses file, download data dari internet, atau baca database.

Kenapa Multithreading?

Multithreading populer karena ringan dan mudah diimplementasi. Tapi, ada satu hal yang perlu kamu tahu: Python punya sesuatu yang disebut GIL (Global Interpreter Lock). GIL ini ngeblok thread biar nggak jalan benar-benar bersamaan. Artinya, multithreading lebih cocok buat tugas yang sering “nunggu”, kayak baca file atau request API.

Contoh Multithreading

import threading
import time

def print_numbers():
    for i in range(5):
        print(f"Angka: {i}")
        time.sleep(1)

def print_letters():
    for letter in 'ABCDE':
        print(f"Huruf: {letter}")
        time.sleep(1)

# Membuat thread
thread1 = threading.Thread(target=print_numbers)
thread2 = threading.Thread(target=print_letters)

# Mulai thread
thread1.start()
thread2.start()

# Tunggu thread selesai
thread1.join()
thread2.join()

Output:

Angka: 0
Huruf: A
Angka: 1
Huruf: B
...

Keren, kan? Kamu bisa ngejalanin dua fungsi secara bersamaan.


Multiprocessing: Buat Kerjaan Berat

Kalau tugasmu lebih berat, misalnya menghitung angka Fibonacci gede banget atau proses CPU-bound, kamu butuh multiprocessing. Ini karena multiprocessing bikin programmu jalan di beberapa proses Python yang masing-masing punya GIL-nya sendiri.

Kenapa Multiprocessing?

Multiprocessing bisa pake semua core CPU yang ada di komputermu. Jadi, kalau komputermu punya 8 core, tugasmu bisa dikerjakan 8 kali lebih cepat (idealnya).

Contoh Multiprocessing

import multiprocessing

def worker(task_id):
    print(f"Task {task_id} dimulai")
    result = sum(i * i for i in range(10_000_000))
    print(f"Task {task_id} selesai: {result}")

if __name__ == "__main__":
    processes = []

    for i in range(4):  # Membuat 4 proses
        process = multiprocessing.Process(target=worker, args=(i,))
        processes.append(process)
        process.start()

    for process in processes:
        process.join()

Output:

Task 0 dimulai
Task 1 dimulai
Task 2 dimulai
Task 3 dimulai
...

Lihat gimana tugas berat bisa dibagi ke beberapa proses? Super cepat!


Kapan Gunakan Multithreading vs Multiprocessing?

  • Multithreading: Kalau tugasmu lebih sering nunggu (IO-bound), kayak download file, baca database, atau request API.
  • Multiprocessing: Kalau tugasmu berat di CPU (CPU-bound), kayak perhitungan matematis atau proses data besar.

Tips Pro Pemrograman Paralel di Python

  1. Hati-Hati Deadlock: Kalau kamu nggak hati-hati, thread atau proses bisa saling nunggu, yang bikin programmu macet.
  2. Gunakan Library: Python punya banyak library keren buat paralelisme, kayak concurrent.futures buat abstraksi yang lebih gampang.
  3. Tes Performamu: Nggak semua tugas cocok diparalelkan. Kadang, overhead-nya malah bikin lebih lambat.

Kesimpulan

Pemrograman paralel di Python bisa jadi senjata rahasia buat nge-boost performa kode kamu, asal kamu tahu kapan harus pake multithreading atau multiprocessing. Jangan takut buat eksperimen, dan yang paling penting, selalu optimalkan kodenya! Siap buat ngoding lebih cepat? Let’s go!

By Medhy

Leave a Reply