Langsung ke konten

Topic archive

Python

Bahasa pemrograman serbaguna dengan sintaks yang mudah dibaca, banyak digunakan dalam pengembangan web, otomasi, sains data, dan AI.

4 articles
Python 09 Sep 2026 8 min read

Matikan Queue Worker asyncio dengan Bersih

Pool worker asynchronous sering dimulai dengan pola sederhana: producer memasukkan job ke asyncio.Queue, consumer melakukan loop pada get(), dan aplikasi menunggu join() sebelum keluar. Bagian yang canggung adalah shutdown. Desain lama biasanya memasukkan satu nilai sentinel ke queue untuk setiap worker, membatalkan consumer setelah join(), atau mempertahankan stop event terpisah. Setiap pendekatan dapat bekerja, tetapi masing-masing menambahkan protokol kedua di samping queue itu sendiri. Python 3.13 menambahkan asyncio.Queue.shutdown() dan exception asyncio.QueueShutDown. Keduanya memungkinkan queue merepresentasikan lifecycle-nya sendiri: terbuka untuk producer, dalam proses shutdown sementara pekerjaan yang ada dikuras, lalu akhirnya tertutup bagi consumer.

Python 09 Sep 2026 9 min read

Kendalikan Startup Task asyncio dengan eager_start

Membuat task asyncio biasanya terasa seperti batas scheduling yang jelas: panggil asyncio.create_task(), simpan task yang dikembalikan, lalu biarkan event loop segera menjalankan coroutine. Python juga mendukung eager task execution, yaitu coroutine dapat mulai berjalan langsung saat task dibuat. Python 3.14 menyediakan pilihan ini secara langsung melalui keyword eager_start pada asyncio.create_task() dan melalui pembuatan task di task group. Pendekatan ini dapat menghilangkan overhead scheduling untuk coroutine yang sering selesai tanpa blocking. Namun, ia juga dapat mengubah urutan program dengan dampak yang jauh lebih penting daripada peningkatan performanya.

Python 08 Sep 2026 8 min read

Bandingkan Nilai Berdekatan Secara Lazy dengan itertools.pairwise

Banyak tugas pemrosesan data sebenarnya merupakan pertanyaan tentang transisi: Apakah sebuah pengukuran meningkat? Berapa lama jeda antara dua event? Apakah state berubah? Apakah sebuah sequence terurut? Masalah seperti ini membutuhkan nilai yang berdekatan, bukan pasangan arbitrer. Python 3.10 menambahkan itertools.pairwise() tepat untuk pola ini. Fungsi tersebut menghasilkan pasangan berdekatan yang saling overlap secara lazy, sehingga intent lebih jelas dibanding indexing manual dan kode yang sama dapat bekerja pada list, generator, file, serta iterable lainnya.

Python 05 Sep 2026 8 min read

Buffer Data Sementara di Python dengan SpooledTemporaryFile

Data sementara sering memiliki profil ukuran yang sulit diprediksi. Sebagian besar request mungkin hanya menghasilkan beberapa kilobyte, sementara sesekali proses import, report, archive, atau upload dapat tumbuh hingga ratusan megabyte. Menggunakan io.BytesIO nyaman untuk kasus kecil, tetapi seluruh isinya tetap berada di memori. Menggunakan temporary file menghindari penyimpanan seluruh payload di memori, tetapi setiap payload memakai storage berbasis filesystem meskipun ukurannya sangat kecil. tempfile.SpooledTemporaryFile dari Python menawarkan jalan tengah. Objek ini berperilaku seperti file sambil menyimpan data di memori hingga threshold yang dikonfigurasi. Ketika data melewati threshold tersebut, data di-roll over ke temporary file dan operasi berlanjut melalui interface yang sama.