Если не использовать многопоточность и не использовать pyplot, наблюдается только очень небольшое увеличение потребления памяти. Я не знаю, откуда это, но это может быть терпимо.
import gc
import psutil
from matplotlib.figure import Figure
def plot_func():
fig = Figure()
ax = fig.add_subplot()
ax.plot([1,2,3], [1,2,3])
fig.savefig('plot_test.png')
init_mem_tot = psutil.Process().memory_info().rss / 2**20
for i in range(100):
init_mem = psutil.Process().memory_info().rss / 2**20
plot_func()
gc.collect()
new_mem = psutil.Process().memory_info().rss / 2**20
print("Memory : %f, previous : %f. (%f difference)" % (new_mem, init_mem, init_mem - new_mem))
final_mem = psutil.Process().memory_info().rss / 2**20
print("Final : %f, Init : %f. (%f tot difference)" % (final_mem, init_mem_tot, final_mem - init_mem_tot))
Вывод: (Обратите внимание, что 95% на самом первом графике)
Memory : 48.113281, previous : 44.140625. (-3.972656 difference)
Memory : 48.152344, previous : 48.113281. (-0.039062 difference)
Memory : 48.195312, previous : 48.152344. (-0.042969 difference)
Memory : 48.199219, previous : 48.195312. (-0.003906 difference)
Memory : 48.199219, previous : 48.199219. (0.000000 difference)
Memory : 48.199219, previous : 48.199219. (0.000000 difference)
Memory : 48.257812, previous : 48.199219. (-0.058594 difference)
Memory : 48.257812, previous : 48.257812. (0.000000 difference)
Memory : 48.265625, previous : 48.257812. (-0.007812 difference)
Memory : 48.265625, previous : 48.265625. (0.000000 difference)
Memory : 48.269531, previous : 48.265625. (-0.003906 difference)
Memory : 48.273438, previous : 48.269531. (-0.003906 difference)
Memory : 48.273438, previous : 48.273438. (0.000000 difference)
Memory : 48.273438, previous : 48.273438. (0.000000 difference)
Memory : 48.273438, previous : 48.273438. (0.000000 difference)
Memory : 48.273438, previous : 48.273438. (0.000000 difference)
Memory : 48.281250, previous : 48.273438. (-0.007812 difference)
Memory : 48.285156, previous : 48.281250. (-0.003906 difference)
Memory : 48.285156, previous : 48.285156. (0.000000 difference)
Memory : 48.312500, previous : 48.285156. (-0.027344 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.312500, previous : 48.312500. (0.000000 difference)
Memory : 48.316406, previous : 48.312500. (-0.003906 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.316406, previous : 48.316406. (0.000000 difference)
Memory : 48.320312, previous : 48.316406. (-0.003906 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Memory : 48.320312, previous : 48.320312. (0.000000 difference)
Final : 48.320312, Init : 44.140625. (4.179688 tot difference)