TheGlobal Interpreter Lock, ialah kunci yang melindungi akses kepada objek Python dan mengawal pelaksanaan thread dengan teliti, menghalang keselarasan perlumbaan dalam akses dan pengubahsuaian data, memastikan hanya satu thread boleh melaksanakan kod Python pada satu-satu masa.
Tanpa GIL, pengurusan memori Python mungkin tidak selamat untuk benang, ia boleh menyebabkan ketidakkonsistenan dan ranap sistem. (Kebuntuan)
Sangat mudah, Thread akan memegang GIL apabila ia berjalan, dan selepas menjalankan Thread akan melepaskan GIL. Benang seterusnya mesti meminta akses kepada GIL untuk melaksanakan Opcodes (operasi peringkat rendah). Saya lukis satu contoh tingkah laku GIL di bawah:
Ini bermakna pembangun Python boleh menggunakan kod async, dan kod berbilang benang dan tidak perlu risau tentang mendapatkan kunci pada mana-mana pembolehubah dalam proses berjalan atau mengalami ranap proses akibat kebuntuan.
Daripada menggunakan benang, anda boleh menggunakan proses untuk menjalankan algoritma anda dalam beberapa kes. Untuk operasi IO/Bound Threading dan concurrency boleh membolehkan anda menggunakan sumber anda dengan lebih baik, untuk operasi CPU/Bound anda boleh menggunakan perpustakaan multiprocessing untuk penggunaan sumber yang lebih baik.
Atas ialah kandungan terperinci Apakah Python GIL? Bagaimana ia berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!