- Free-threaded CPython adalah perubahan besar yang memungkinkan beberapa thread berjalan secara paralel dalam interpreter yang sama
- Tersedia sebagai fitur eksperimental di CPython 3.13
- Berkat PEP 703, kini dapat dijalankan dengan GIL dalam keadaan nonaktif
- Penting untuk peningkatan performa, terutama performa multi-thread
- Memungkinkan pemanfaatan beberapa inti CPU secara efektif
Menarik, tapi apa masalahnya?
- Implementasi free-threading di CPython sendiri merupakan upaya besar
- Ada dua masalah utama: keamanan thread dan kompatibilitas ABI
- Keamanan thread: kode Python murni akan berjalan tanpa perubahan, tetapi kode yang ditulis dalam bahasa lain atau yang menggunakan CPython C API mungkin tidak demikian
- Kompatibilitas ABI: interpreter free-threaded memiliki ABI yang berbeda, sehingga setiap paket yang memiliki modul ekstensi harus membangun wheel tambahan
- Masalah keamanan thread sulit dipahami, diperbaiki, dan diuji
- Contoh: kegagalan intermiten yang terjadi pada numpy#26690, pywavelets#758, dan lain-lain
Rencana ke depan dan pekerjaan tim
- Diperlukan beberapa tahun hingga free-threaded CPython menjadi default
- Mereka berharap banyak proyek akan mengerjakan kompatibilitas di Python 3.13 dan merilis wheel
cp313t ke PyPI
- Tim telah memulai pekerjaan selama beberapa bulan dari lapisan bawah stack PyData
- Untuk setiap paket, mereka menggunakan pendekatan serupa:
- Menambahkan tugas CI pertama
- Memperbaiki masalah keamanan thread serta status bersama/global
- Menambahkan dukungan free-threaded ke tugas CI build wheel
- Melakukan stress test secara lokal dan memantau tugas CI
- Menandai modul ekstensi agar dapat berjalan tanpa GIL
- Beralih ke paket berikutnya
Ringkasan GN⁺
- Free-threaded CPython adalah perubahan penting yang dapat sangat meningkatkan performa multi-thread
- Menyelesaikan masalah keamanan thread dan kompatibilitas ABI adalah tantangan utama
- Mereka berharap banyak proyek dapat mengerjakan kompatibilitas dan bereksperimen di Python 3.13
- Paket utama seperti PyTorch dan banyak paket kecil juga harus mengadopsi perubahan ini
- Proyek terkait mencakup PyO3 dan PyTorch
1 komentar
Opini Hacker News
Dengan dihapusnya GIL di Python, banyak organisasi dan proyek mendapat peluang untuk meningkatkan performa secara signifikan hampir tanpa upaya tambahan
Berbagi pengalaman memasang dan menjalankan Python tanpa GIL di macOS
Pengguna yang menyukai kemudahan penulisan dan logika Python berharap pendekatan tanpa GIL tetap mirip dengan cara menulis Python saat ini
Merangkum perkembangan Python 3
Mengingat kembali bahwa pemrosesan paralel menjadi hal yang esensial sekitar tahun 2007
Menjelaskan dalam PEP703 bagaimana operasi
appendpada list tetap mempertahankan thread safety setelah GIL dihapusMenantikan bagaimana penghapusan GIL akan mengubah sifat training dan inference ML
Khawatir para programmer yang belum pernah benar-benar menangani multithreading akan memperkenalkan bug halus yang baru
Mengajukan pertanyaan apakah penurunan performa single-thread cukup serius
Mengungkapkan rasa penasaran tentang cara kerjanya dengan async