1 điểm bởi GN⁺ 2024-03-12 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Cho phép vô hiệu hóa GIL

  • Giờ đây có thể vô hiệu hóa GIL (Global Interpreter Lock) bằng cách đặt PYTHON_GIL=0 hoặc -X gil=0.
  • Các cấu trúc dữ liệu liên quan đến GIL vẫn được khởi tạo, nhưng khi vô hiệu hóa GIL thì take_gil()drop_gil() sẽ trả về sớm.
  • Đã thử chạy một số bài kiểm tra và các chương trình nhỏ khi GIL bị vô hiệu hóa, và các chương trình luồng cơ bản đôi khi cũng hoạt động.
  • Khi cố chạy toàn bộ bộ kiểm thử, chương trình nhanh chóng bị crash ở test_asyncio.

Thêm cơ chế vô hiệu hóa GIL

  • Đã có thảo luận về issue thêm cơ chế vô hiệu hóa GIL (#116167).
  • Đã bổ sung khả năng vô hiệu hóa GIL trong bản dựng free-threaded.
  • Theo dõi công việc bật lại GIL (#116322) và công việc vô hiệu hóa GIL theo mặc định (#116329).

Review mã và kiểm thử

  • Đã có thảo luận về việc yêu cầu review mã và bổ sung test case.
  • Có đề xuất tài liệu hóa biến môi trường PYTHON_GIL và thu thập phản hồi từ người dùng.
  • Bao gồm việc thêm tùy chọn -X gil, phản ánh trong sys.flags, và sửa các bài kiểm tra xử lý biến môi trường.

Ý kiến của GN⁺

  • Thay đổi này có thể tạo ảnh hưởng lớn đến cộng đồng Python, vì GIL là một yếu tố nổi tiếng làm hạn chế hiệu năng đa luồng của Python.
  • Tính năng vô hiệu hóa GIL có thể mang lại cải thiện hiệu năng, nhưng đồng thời cũng có thể gây ra vấn đề về độ ổn định và khả năng tương thích, nên cần tiếp cận một cách thận trọng.
  • Việc chạy Python không có GIL có thể đem lại lợi ích, đặc biệt với các tác vụ liên quan đến xử lý song song, nhưng nhiều mã Python hiện có được viết với giả định có GIL, nên cần đánh giá kỹ tác động của thay đổi này.
  • Ở các ngôn ngữ hoặc runtime khác, cơ chế tương tự GIL thường không được sử dụng; ví dụ, Node.js chọn cách tối đa hóa hiệu năng đơn luồng thông qua I/O bất đồng bộ.
  • Khi áp dụng công nghệ này, cần rà soát tính an toàn luồng của mã hiện có và cân nhắc refactor khi cần. Điều quan trọng là phải cân bằng hợp lý giữa lợi ích hiệu năng khi vô hiệu hóa GIL và độ ổn định.

Chưa có bình luận nào.

Chưa có bình luận nào.