IOError“在循环中使用savefig()时打开文件过多”

Dee*_*der 5 plot matplotlib figure

我在使用matplotlib时遇到了一些问题。尝试使用时,将某个数字保存成一个循环一百次savefig(),但最终出现以下错误:

IOError: [Errno 24] Too many open files: 'test_421.png'
Run Code Online (Sandbox Code Playgroud)

我检查了figure保存后是否关闭了所有文件,但似乎效率不高。

这是一个代码示例,说明了如何得到此错误:

def displayFig(input, display, savePath):
    fig = plt.figure(figsize=(22, 5))
    # add some subplots, axis and colorbars...
    if display:
        plt.show()
    else:
        plt.savefig(savePath, dpi = 100)
    plt.close(fig)

for i, inp in enumerate(inpArray):
    savePath = 'test_%d.png' % i
    displayFig(inp, False, savePath)
Run Code Online (Sandbox Code Playgroud)

为什么会引发此错误?可能是多线程问题还是内存泄漏?

pel*_*son 0

尝试升级您的 matplotlib 版本。我相信从 matplotlib v1.2.0 开始,这个问题已经得到解决(通过此 PR https://github.com/matplotlib/matplotlib/issues/1466/)。