11. Multi-threading & Asynchronous Programming dalam Python

 

✅ 11. Multi-threading & Asynchronous Programming dalam Python

📌 Multi-threading & asynchronous programming memungkinkan program untuk menjalankan beberapa tugas sekaligus tanpa menunggu satu proses selesai sebelum memulai yang lain.
📌 Threading digunakan untuk menjalankan beberapa proses secara bersamaan dalam satu program.
📌 Asyncio memungkinkan eksekusi kode secara asinkron tanpa harus menunggu tugas selesai sebelum melanjutkan tugas lain.


1️⃣ Threading Dasar (Menjalankan Banyak Tugas Sekaligus di Python)

🔹 Apa Itu Threading?

  • Thread adalah unit eksekusi yang berjalan secara independen dalam suatu program.
  • Multi-threading memungkinkan Python menjalankan beberapa tugas secara bersamaan.

📌 Contoh Tanpa Threading (Program Synchronous, Lambat)

import time

def tugas(nama):
    print(f"{nama} dimulai...")
    time.sleep(3)  # Simulasi tugas yang memakan waktu
    print(f"{nama} selesai!")

tugas("Tugas 1")
tugas("Tugas 2")

📌 Masalah:

  • Tugas 2 harus menunggu hingga Tugas 1 selesai.
  • Program berjalan secara berurutan (synchronous) dan lebih lambat.

🔹 Contoh dengan Multi-threading (Lebih Cepat & Paralel)

import threading
import time

def tugas(nama):
    print(f"{nama} dimulai...")
    time.sleep(3)
    print(f"{nama} selesai!")

# Membuat thread untuk menjalankan tugas secara bersamaan
thread1 = threading.Thread(target=tugas, args=("Tugas 1",))
thread2 = threading.Thread(target=tugas, args=("Tugas 2",))

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

# Menunggu hingga semua thread selesai
thread1.join()
thread2.join()

print("Semua tugas selesai!")

📌 Penjelasan:
threading.Thread(target=tugas, args=("Tugas 1",)) → Membuat thread baru.
thread1.start() → Memulai eksekusi thread.
thread1.join() → Menunggu thread selesai sebelum melanjutkan kode berikutnya.

📌 Keuntungan:

  • Kedua tugas berjalan secara paralel (lebih cepat).
  • Tidak perlu menunggu satu tugas selesai sebelum menjalankan tugas lain.

2️⃣ Asyncio untuk Kode Asinkron (Alternatif Multi-threading dengan Event Loop)

📌 Apa Itu Asyncio?

  • asyncio adalah pustaka Python untuk menjalankan tugas asinkron tanpa membuat banyak thread.
  • Menggunakan event loop untuk menangani banyak tugas tanpa blocking.

🔹 Contoh Synchronous (Tanpa Asyncio, Lambat)

import time

def tugas(nama):
    print(f"{nama} dimulai...")
    time.sleep(3)
    print(f"{nama} selesai!")

tugas("Tugas 1")
tugas("Tugas 2")

📌 Masalah:

  • Setiap tugas harus menunggu tugas sebelumnya selesai.
  • Total waktu eksekusi: 6 detik.

🔹 Contoh dengan Asyncio (Lebih Cepat & Non-blocking)

import asyncio

async def tugas(nama):
    print(f"{nama} dimulai...")
    await asyncio.sleep(3)  # Simulasi tugas tanpa blocking
    print(f"{nama} selesai!")

async def main():
    await asyncio.gather(
        tugas("Tugas 1"),
        tugas("Tugas 2")
    )

asyncio.run(main())

📌 Penjelasan:
async def tugas(nama) → Menjadikan fungsi asinkron.
await asyncio.sleep(3) → Simulasi tugas tanpa blocking.
asyncio.gather(tugas1, tugas2) → Menjalankan kedua tugas bersamaan.

📌 Keuntungan:

  • Program lebih efisien dan tidak perlu menunggu tugas lain selesai.
  • Total waktu eksekusi: hanya 3 detik!

3️⃣ Perbedaan Threading vs Asyncio

Fitur Threading Asyncio
Cara Kerja Beberapa thread dijalankan secara bersamaan Satu event loop menangani banyak tugas
Penggunaan Cocok untuk tugas berat (misalnya: download file besar) Cocok untuk tugas ringan (misalnya: API requests)
Blokir Eksekusi? Bisa terblokir jika banyak thread berat Tidak terblokir (lebih efisien)
Kelebihan Dapat menangani CPU-bound tasks Lebih ringan & efisien untuk I/O-bound tasks
Kekurangan Membutuhkan lebih banyak sumber daya Tidak cocok untuk tugas yang membutuhkan banyak CPU

📌 Kesimpulan

Threading cocok untuk tugas berat yang butuh banyak CPU.
Asyncio cocok untuk tugas ringan yang membutuhkan banyak I/O (misalnya API request).
Menggunakan threading untuk proses berat seperti download file besar.
Menggunakan asyncio untuk mengakses banyak API secara paralel.

🔥 Selanjutnya, kita bisa belajar bagaimana menggunakan Asyncio untuk mengunggah banyak video affiliate ke TikTok, Shopee, dan YouTube secara otomatis. Mau lanjut? 🚀

Tidak ada komentar:

Posting Komentar