1 poin oleh GN⁺ 2024-03-12 | Belum ada komentar. | Bagikan ke WhatsApp

Mengizinkan penonaktifan GIL

  • Kini dimungkinkan untuk menonaktifkan GIL (Global Interpreter Lock) dengan menetapkan PYTHON_GIL=0 atau -X gil=0.
  • Struktur data terkait GIL tetap diinisialisasi, tetapi saat GIL dinonaktifkan, take_gil() dan drop_gil() akan langsung mengembalikan nilai lebih awal.
  • Beberapa pengujian dan program kecil telah dicoba dalam keadaan GIL dinonaktifkan, dan program thread dasar juga kadang-kadang berjalan.
  • Saat mencoba menjalankan seluruh test suite, terjadi crash dengan cepat di test_asyncio.

Menambahkan mekanisme penonaktifan GIL

  • Ada pembahasan mengenai issue (#116167) untuk menambahkan mekanisme penonaktifan GIL.
  • Ditambahkan kemampuan untuk menonaktifkan GIL pada build free-threaded.
  • Juga dilacak pekerjaan untuk mengaktifkan kembali GIL (#116322) dan menonaktifkan GIL secara default (#116329).

Code review dan pengujian

  • Ada diskusi mengenai permintaan code review dan penambahan test case.
  • Ada usulan untuk mendokumentasikan variabel lingkungan PYTHON_GIL dan mendapatkan umpan balik dari pengguna.
  • Termasuk penambahan opsi -X gil, pencerminan ke sys.flags, serta perbaikan pengujian yang menangani variabel lingkungan.

Opini GN⁺

  • Perubahan ini dapat berdampak besar pada komunitas Python, karena GIL merupakan faktor yang sudah lama dikenal membatasi performa multithreading Python.
  • Kemampuan menonaktifkan GIL dapat membawa peningkatan performa, tetapi pada saat yang sama juga bisa memunculkan masalah stabilitas dan kompatibilitas sehingga memerlukan pendekatan yang hati-hati.
  • Menjalankan Python tanpa GIL dapat memberikan keuntungan terutama pada pekerjaan yang terkait pemrosesan paralel, tetapi banyak kode Python yang ada saat ini ditulis dengan asumsi keberadaan GIL, sehingga penting untuk menilai dampak dari perubahan ini.
  • Di bahasa atau runtime lain, sering kali tidak digunakan mekanisme yang mirip dengan GIL; misalnya, Node.js mengambil pendekatan memaksimalkan performa single-thread melalui I/O asinkron.
  • Saat mengadopsi teknologi ini, perlu meninjau thread safety pada kode yang sudah ada dan, bila perlu, mempertimbangkan refactoring. Penting untuk menjaga keseimbangan antara keuntungan performa dari penonaktifan GIL dan stabilitas.

Belum ada komentar.

Belum ada komentar.