Утечка памяти в Matplotlib при рендеринге MathText, чтобы получить ограничивающую рамку - PullRequest
0 голосов
/ 18 декабря 2018

Вызов get_window_extent() для связывания MathText Текстовые объекты в цикле увеличивают используемую память, несмотря на удаление текстовых объектов.Минимальный рабочий пример:

import matplotlib.pyplot as plt
import random


fig = plt.figure()
renderer = fig.canvas.get_renderer()
sample_text = ' '.join("${}$".format(random.random())
                       for _ in range(1000))
while True:
    # This wouldn't make memory usage grow:
    # text = sample_text

    # This wouldn't either:
    # text = ' '.join("{}".format(random.random())
    #                 for _ in range(1000))

    # But this does:
    text = ' '.join("${}$".format(random.random())
                    for _ in range(1000))
    # ...when combined with get_window_extent():
    plotted_text = fig.text(0, 0, text)
    plotted_text.get_window_extent(renderer)
    plotted_text.remove()

Есть идеи, почему и как это можно предотвратить?

...