plotly / plotly/plotly.py

memory leak in Python 3.13 free-threaded build

Đang mở
#5,176 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

bug P2 regression
Ngôn ngữ chính
Python
Star
18.8k
Fork
2.8k
Merge trung bình
16 giờ 26 phút
Pull request đã merge (30 ngày)
21

Mô tả

I spent some time trying to debug a memory leak caused by calling plotly.express.line within a Dash live update callback under a Python 3.13.3t (free-threaded). Setting PYTHON_GIL=0 or PYTHON_GIL=1 appears to make no difference.

By no means have I located the root cause of the issue (not yet anyway), but I've been able to at least narrow it down to at least one problematic line of code in the BaseFigure class

https://github.com/plotly/plotly.py/blob/main/plotly/basedatatypes.py#L581

If I run the example code shown below (which is HIGHLY distilled from the originating Dash app I was trying to debug), the memory footprint seems to steadily climb with each iteration. If I comment out the offending line within BaseFigure (shown above), the memory footprint remains stable

#!/usr/bin/env -S python3 -u

import sys
import time
from plotly.basedatatypes import BaseFigure

gil = sys._is_gil_enabled()
print(f'GIL enabled = {gil}')

while True:
    BaseFigure()
    BaseFigure()
    BaseFigure()
    time.sleep(.01)

For long running applications like the one described earlier, slow and steady memory consumption issues are causing some rather significant issues.

System details

OS: docker://python:3.12-slim-bookworm
Arch: aarch64
Python version: uv python install 3.13.3t
Plotly version: 6.0.1

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu bằng cách chạy vòng lặp BaseFigure đã được rút gọn trên Python 3.13.3t và quan sát mức sử dụng bộ nhớ của nó. Kiểm tra plotly/basedatatypes.py quanh dòng 581, sau đó so sánh hành vi khi dòng đó được chú thích. Được xem là hoàn tất khi xác định được nguyên nhân và xác nhận rằng việc tạo BaseFigure lặp lại không còn gây ra mức tăng bộ nhớ liên tục.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
performance
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.