✅ 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?
asyncioadalah 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