Dalam Python mereka sudah membincangkan cadangan untuk mengalih keluar GIL dan mendapatkan prestasi yang lebih baik

Logo Python

Python ialah bahasa pengaturcaraan peringkat tinggi.

Berita baru-baru ini tersebar bahawa Jawatankuasa Pemandu Projek Python telah mengumumkan hasratnya untuk meluluskan Cadangan sambungan bahasa Python «PEP-0703″, menjadikan kunci jurubahasa global sebagai pilihan dalam CPython dan yang pada asasnya mentakrifkan benam mod kompilasi CPython tanpa Kunci Jurubahasa Global (GIL).

PEP-0703 mentakrifkan untuk berhenti menggunakan GIL secara lalai, tetapi tambahkan pilihan binaan “–sin-gil” untuk melumpuhkannya. Apa khabarl Mod baharu dijangka dapat menyelesaikan masalah dengan penyejajaran operasi pada sistem berbilang teras, disebabkan oleh fakta bahawa kunci global tidak membenarkan akses selari kepada objek kongsi daripada benang yang berbeza.

Disebutkan bahawa dalam jangka masa panjang (selepas 5 tahun), shell dirancang untuk ditukar secara lalai kepada hanya dalam mod tidak mengunci global, sementara pada masa yang sama menggugurkan sokongan untuk menyusun dengan GIL.

Terima kasih semua kerana memberi maklum balas kepada tinjauan mengenai cadangan tiada GIL. Jelas sekali bahawa sentimen umum adalah positif, baik untuk idea umum dan untuk PEP 703 khususnya. Lembaga Pengarah juga sebahagian besarnya positif terhadap kedua-duanya. Kami berhasrat untuk menerima PEP 703, walaupun kami masih mengusahakan butiran penerimaan.

Seperti yang telah kami lakukan beberapa kali pada masa lalu, kami ingin menyampaikan hasrat kami untuk menerima PEP bersama-sama dengan pemikiran semasa kami mengenai butiran yang berkaitan dengan penerimaan.

Selain itu, Disebutkan bahawa perubahan yang dirancang untuk dijalankan dalam tiga peringkat, iaitu jangka pendek, sederhana dan panjang. Memandangkan itu pada peringkat pertama, melumpuhkan GIL secara lalai adalah tidak praktikal disebabkan oleh overhed yang dikaitkan dengan perubahan kepada pemungut sampah, sistem pengurusan memori dan primitif untuk mengatur kunci. Sebagai contoh, disebabkan penggunaan pengiraan rujukan untuk pengasingan benang, terdapat penurunan prestasi untuk skrip berbenang tunggal (dalam suite ujian pyperformance sebanyak 10%). Pada masa yang sama, mungkin perlu untuk melumpuhkan GIL dalam pengkomputeran saintifik, yang mana kekurangan penyejajaran adalah masalah yang lebih serius daripada kelajuan linear pelaksanaan kod.

Pada peringkat kedua, secara asasnya pengesahan akan ditunggu. dan bahawa terdapat sokongan yang mencukupi daripada masyarakat supaya penggunaan "bukan GIL adalah berdaya maju" dan pastikan binaan tanpa GIL disokong tetapi bukan lalai.

Pada peringkat terakhir, no-GIL sudah menjadi nilai lalai dan sebarang sisa GIL akan dialih keluar (tanpa perlu memecahkan keserasian ke belakang).

Ia diperhatikan bahawa kerja untuk menjauh dari GIL akan dilakukan dengan sangat berhati-hati agar tidak mengulangi kesilapan apa yang berlaku semasa membuat promosi Python 3: Binaan bukan GIL perlu memastikan keserasian dengan versi Python yang lebih lama, dan sebarang perubahan kod pihak ketiga yang diperlukan untuk berfungsi pada binaan bukan GIL juga harus berfungsi pada binaan GIL.

Tiada rancangan untuk menomborkan semula versi kepada Python 4 untuk binaan bukan GIL, kerana ia akan mengekalkan keserasian ABI.

Sepanjang proses itu, kami (pembangun teras, bukan hanya SC) perlu menilai semula kemajuan dan garis masa yang dicadangkan. Kami tidak mahu ini menjadi satu lagi pertarungan keserasian ke belakang sepuluh tahun, dan kami mahu dapat membatalkan PEP 703 dan mencari penyelesaian lain jika ia kelihatan bermasalah, jadi kami perlu sentiasa menyemak bahawa kerja berterusan berbaloi.

Kami berharap ini memberikan sedikit kejelasan tentang masa depan PEP sambil kami mencari butiran penerimaan yang tepat. SC akan berusaha untuk memuktamadkan penerimaan dalam beberapa minggu akan datang.

Sebelum peralihan penuh kepada binaan bukan GIL, kami merancang untuk mencapai sokongan komuniti penuh untuk binaan ini, serta menyediakan API C dan API Python tambahan untuk mendayakan multithreading selamat dalam kod sedia ada.

Akhir sekali, seperti yang telah disebutkan, adalah dijangka peralihan ke peringkat ketiga boleh berlaku dalam sekurang-kurangnya 5 tahun dan tarikh kemungkinan untuk PEP-0703 ialah keluaran Python 3.13, dijadualkan pada musim gugur akan datang.

Jika anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh menyemak perinciannya Dalam pautan berikut.