1 điểm bởi darjeeling 2 giờ trước | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Giới thiệu một trường hợp sử dụng Tachyon, trình profiler lấy mẫu được đưa vào Python 3.15, để trực quan hóa các nút thắt cổ chai đa luồng và phát hiện những cạm bẫy hiệu năng của tính trừu tượng OOP

Tachyon là gì?

Đây là trình profiler dựa trên lấy mẫu sẽ được thêm vào thư viện chuẩn của Python 3.15.
Điểm cốt lõi là nó hỗ trợ nguyên bản môi trường free-threading (không GIL), điều mà các profiler trước đây thường bỏ qua.

Các đặc điểm chính

  • Phương pháp lấy mẫu mang lại overhead thấp
  • Hỗ trợ profiling đồng thời mọi luồng (-a)
  • Có thể gắn kết từ xa (attach) vào tiến trình đang chạy
  • Hỗ trợ nhiều định dạng đầu ra như flame graph
  • Nhận biết async — có thể áp dụng cho cả chương trình asyncio

Cách chạy

sudo -E uv run -p 3.15.0a6t python -m profiling.sampling run \  
  -a --flamegraph -o profile.html -r 20khz your_script.py  
# -a       : profiling tất cả các luồng ngoài luồng chính  
# -r 20khz : lấy mẫu 20.000 lần mỗi giây (có thể điều chỉnh độ chính xác)  
# Kết quả  : HTML flame graph — cột màu đỏ là hot path  

Trường hợp áp dụng thực tế — phát hiện nút thắt cổ chai của free-threading

Trước tối ưu hóa — truy cập Grid qua __getitem__ chiếm 75% tổng thời gian thực thi

<https://blog.changs.co.uk/images/unoptimised-bench.png>;

Sau tối ưu hóa — sau khi chuyển sang truy cập trực tiếp tuple nội bộ, tỷ lệ giảm xuống còn 5,32%

<https://blog.changs.co.uk/images/optimised-bench.png>;

Vì sao điều này quan trọng

  • Từ trước đến nay, các vấn đề hiệu năng của free-threading gần như chỉ có thể tìm bằng "cảm giác"
  • Tachyon là công cụ chính thức đầu tiên cho thấy trực quan luồng bị nghẽn ở đâu
  • Mở ra khả năng để cả các nhà phát triển Python thông thường cũng có thể tự đo lường và cải thiện hiệu năng free-threading

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

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