Matplotlib animation.FuncAnimation увеличивает использование памяти во время работы скрипта python - PullRequest
0 голосов
/ 23 февраля 2019

Я новичок в программировании на Python и пытаюсь создать графический интерфейс с динамическими графиками (анимация).Я использую animation.FuncAnimation (), и пока скрипт запускается, использование памяти увеличивается со временем.Animation.FuncAnimation () считывает данные из файла каждые 500 мс.Есть ли способ решить эту проблему и остановить увеличение использования памяти?

import tkinter as tk
import numpy as np

import matplotlib
matplotlib.use("TkAgg")
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
import matplotlib.animation as animation


figure_1 = Figure()
figure_2 = Figure()
plot_1 = figure_1.add_subplot(111)
plot_2 = figure_2.add_subplot(111)


def animate(i):
    global plot_1
    x_plot_1_1 = np.array([])
    y_plot_1_1 = np.array([])
    pullData = open('text_1.txt', "r").read()
    dataList = pullData.split('\n')

    if dataList == ['']:
        print('empty')
    else:
        for eachLine in dataList:
            if len(eachLine) > 1:
                y, x = eachLine.split(',')
                y_plot_1_1 = np.append(y_plot_1_1, [float(y)])
                x_plot_1_1 = np.append(x_plot_1_1, x)

        x_plot_1_1 = x_plot_1_1.astype("datetime64[s]")

    plot_1.clear()
    plot_1.plot_date(x_plot_1_1, y_plot_1_1, "r")


class MainWindow(tk.Tk):

    def __init__(self, *args, **kwargs):
        super().__init__()
        container = tk.Frame(self)
        tk.Tk.wm_title(self, "Test")

        container.pack(side="top", fill="both", expand=True)
        container.grid_columnconfigure(0, weight=1)
        container.grid_rowconfigure(0, weight=1)

        self.canvas = FigureCanvasTkAgg(figure_1, self)
        self.canvas.draw()
        self.canvas.get_tk_widget().pack()


if __name__ == "__main__":
    app = MainWindow()
    ani1 = animation.FuncAnimation(figure_1, animate, interval=500, save_count=0)
    app.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...