5

matplotlib に少し問題があります。で数百回ループしていくつかの図を保存しようとするとsavefig()、最終的に次のエラーで終了します。

IOError: [Errno 24] Too many open files: 'test_421.png'

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)

このエラーが発生するのはなぜですか? マルチスレッドの問題か、メモリ リークでしょうか。

4

1 に答える 1

0

matplotlib のバージョンをアップグレードしてみてください。matplotlib v1.2.0 から、これは対処されたと思います (この PR https://github.com/matplotlib/matplotlib/issues/1466/により)。

于 2013-08-16T07:31:10.080 に答える