- Free-threaded CPython là một thay đổi lớn cho phép chạy song song nhiều luồng trong cùng một trình thông dịch
- Được cung cấp dưới dạng tính năng thử nghiệm trong CPython 3.13
- Nhờ PEP 703, giờ đây có thể chạy với GIL bị vô hiệu hóa
- Điều này quan trọng để cải thiện hiệu năng, đặc biệt là hiệu năng đa luồng
- Giúp tận dụng hiệu quả nhiều lõi CPU
Tuy ấn tượng, nhưng vấn đề là gì?
- Việc triển khai free-threading ngay trong CPython là một nỗ lực rất lớn
- Có hai vấn đề chính: an toàn luồng và tương thích ABI
- An toàn luồng: mã Python thuần có thể hoạt động mà không cần thay đổi, nhưng mã được viết bằng ngôn ngữ khác hoặc mã sử dụng CPython C API thì có thể không như vậy
- Tương thích ABI: trình thông dịch free-threaded có ABI khác, vì vậy mỗi gói có mô-đun mở rộng cần phải build thêm wheel
- Các vấn đề về an toàn luồng rất khó để hiểu, cải thiện và kiểm thử
- Ví dụ: các lỗi thất bại gián đoạn xuất hiện trong numpy#26690, pywavelets#758, v.v.
Kế hoạch sắp tới và công việc của nhóm
- Sẽ mất vài năm để free-threaded CPython trở thành mặc định
- Hy vọng trong Python 3.13, nhiều dự án sẽ làm việc về tương thích và phát hành wheel
cp313t lên PyPI
- Nhóm đã bắt đầu làm việc trong vài tháng qua từ tầng thấp nhất của ngăn xếp PyData
- Với mỗi gói, họ áp dụng một cách tiếp cận tương tự:
- Thêm tác vụ CI đầu tiên
- Sửa các vấn đề về an toàn luồng và trạng thái dùng chung/toàn cục
- Thêm hỗ trợ free-threaded vào các tác vụ CI build wheel
- Stress test cục bộ và theo dõi các tác vụ CI
- Đánh dấu để mô-đun mở rộng có thể chạy mà không cần GIL
- Chuyển sang gói tiếp theo
Tóm tắt của GN⁺
- Free-threaded CPython là một thay đổi quan trọng có thể cải thiện mạnh hiệu năng đa luồng
- Giải quyết các vấn đề về an toàn luồng và tương thích ABI là thách thức chính
- Hy vọng trong Python 3.13, nhiều dự án sẽ làm việc về tương thích và có thể thử nghiệm
- Các gói lớn như PyTorch cùng nhiều gói nhỏ khác sẽ cần thích nghi với thay đổi này
- Các dự án liên quan gồm có PyO3 và PyTorch
1 bình luận
Ý kiến Hacker News
Việc loại bỏ GIL của Python mở ra cơ hội cải thiện hiệu năng đáng kể cho nhiều tổ chức và dự án gần như không cần thêm nỗ lực
Chia sẻ trải nghiệm cài đặt và chạy Python đã loại bỏ GIL trên macOS
Người dùng yêu thích sự dễ viết và tính logic của Python hy vọng cách tiếp cận không có GIL sẽ vẫn giống với cách viết Python hiện nay
Tóm tắt tiến độ của Python 3
Nhớ lại rằng vào khoảng năm 2007, xử lý song song đã trở thành điều bắt buộc
Giải thích trong PEP703 về cách phép toán
appendcủa list vẫn giữ được tính an toàn luồng sau khi loại bỏ GILKỳ vọng việc loại bỏ GIL sẽ thay đổi bản chất của huấn luyện và suy luận ML như thế nào
Lo ngại rằng các lập trình viên chưa từng xử lý multithreading thực sự có thể đưa vào những lỗi tinh vi mới
Đặt câu hỏi liệu mức suy giảm hiệu năng đơn luồng có nghiêm trọng hay không
Bày tỏ sự tò mò về cách nó hoạt động với async