相关疑难解决方法(0)

如何在创建matplotlib数字后释放内存

我有几个matlpotlib函数卷入了一些django-celery任务.

每次调用任务时,RAM都专用于python.不久之后,python占用了所有的RAM.

问题:我该如何释放这个记忆?

更新2 - 第二个解决方案:

我问过类似的问题,特别是有关内存锁定matplotlib错误的时候,但是我有一个很好的回答这个问题.clf(),.close()以及gc.collect()如果使用多进程运行在单独的进程中绘图功能,其内存会自动释放不需要一旦过程结束.

Matplotlib错误导致内存泄漏.我怎样才能释放那段记忆?

更新 - 解决方案:

这些stackoverflow帖子建议我可以使用以下命令释放matplotlib对象使用的内存:

.clf():在循环中绘图时,Matplotlib内存不足

.close():Python matplotlib:指定图形大小时未释放内存

import gc
gc.collect()
Run Code Online (Sandbox Code Playgroud)

以下是我用来测试解决方案的示例:

import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
from pylab import import figure, savefig
import numpy as np
import gc      

a = np.arange(1000000)
b = np.random.randn(1000000)

fig = plt.figure(num=1, dpi=100, facecolor='w', edgecolor='w')
fig.set_size_inches(10,7)
ax = fig.add_subplot(111)
ax.plot(a, b)

fig.clf()
plt.close()
del a, b
gc.collect()
Run Code Online (Sandbox Code Playgroud)

python memory-leaks numpy matplotlib

58
推荐指数
1
解决办法
3万
查看次数

您自己的PyQt4 GUI中的Matplotlib动画

我正在用Python编写软件.我需要将Matplotlib时间动画嵌入到自制的GUI中.以下是有关它们的更多详细信息:

1. GUI

GUI也是用Python编写的,使用PyQt4库.我的GUI与您在网上可以找到的常见GUI没有太大区别.我只是继承QtGui.QMainWindow并添加一些按钮,布局,......

2.动画

Matplotlib动画基于animation.TimedAnimation类.这是动画的代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.lines import Line2D
import matplotlib.animation as animation

        class CustomGraph(animation.TimedAnimation):

        def __init__(self):

            self.n = np.linspace(0, 1000, 1001)
            self.y = 1.5 + np.sin(self.n/20)
            #self.y = np.zeros(self.n.size)


            # The window
            self.fig = plt.figure()
            ax1 = self.fig.add_subplot(1, 2, 1)
            self.mngr = plt.get_current_fig_manager() 
            self.mngr.window.setGeometry(50,100,2000, 800)

            # ax1 settings
            ax1.set_xlabel('time')
            ax1.set_ylabel('raw data')
            self.line1 = Line2D([], [], color='blue')
            ax1.add_line(self.line1)
            ax1.set_xlim(0, 1000)
            ax1.set_ylim(0, 4)


            animation.TimedAnimation.__init__(self, self.fig, interval=20, blit=True)


        def …
Run Code Online (Sandbox Code Playgroud)

python animation pyqt matplotlib pyqt4

6
推荐指数
1
解决办法
6460
查看次数

标签 统计

matplotlib ×2

python ×2

animation ×1

memory-leaks ×1

numpy ×1

pyqt ×1

pyqt4 ×1