Tôi thường thấy mọi người nói rằng GIL là thông dịch viên Python (ngay cả ở đây trên stackoverflow).Có phải Python GIL thực sự là thông dịch viên không?
Nhưng những gì tôi nhìn thấy trong mã nguồn có vẻ như GIL là một biến toàn cầu và do đó có một GIL cho tất cả các thông dịch viên trong mỗi quá trình python. Tôi biết họ đã làm điều này vì không có đối tượng thông dịch nào được truyền đi như lua hay TCL, nó không được thiết kế tốt ngay từ đầu. Và luồng lưu trữ cục bộ dường như không thể di chuyển được cho những người dùng python.
Điều này có đúng không? Tôi đã có một cái nhìn ngắn ở phiên bản 2.4 tôi đang sử dụng trong một dự án ở đây.
Điều này có thay đổi trong các phiên bản sau, đặc biệt là trong 3.0 không?
Rất nhiều dự án đã xóa GIL khỏi CPython trước đây. Unladen Swallow không phải là người đầu tiên. Tuy nhiên họ không thực hiện tốt như phiên bản GIL nên không ai sử dụng chúng. – nosklo
Ngoài ra, ngăn xếp không loại bỏ GIL. Trong thực tế, bất kỳ hoạt động chặn nào trong bất kỳ microthread stackless nào cũng sẽ chặn toàn bộ ứng dụng. – nosklo
Và Jython quá chậm nên cũng không thể sử dụng được - trừ khi bạn chỉ sử dụng nó cho một plugin kịch bản cho một chương trình java, nơi hầu hết công việc được thực hiện bằng Python. – Lothar