code

matplotlib 그림을 만든 후 어떻게 메모리를 해제 할 수 있습니까?

codestyles 2020. 12. 26. 10:04
반응형

matplotlib 그림을 만든 후 어떻게 메모리를 해제 할 수 있습니까?


몇 가지 django-celery 작업에 여러 matlpotlib 함수가 포함되어 있습니다.

작업이 호출 될 때마다 더 많은 RAM이 파이썬 전용입니다. 오래지 않아 파이썬은 모든 RAM을 차지합니다.

질문 : 이 기억을 어떻게 해제 할 수 있습니까?

업데이트 2-두 번째 솔루션 :

메모리가 때하기 matplotlib 오류 갇혀에 대해 내가 특별히 비슷한 질문을하지만, 나는이 질문에 좋은 답변을 가지고 .clf(), .close()그리고 gc.collect()당신이 누구의 메모리를 자동으로 해제됩니다 별도의 프로세스에서 플로팅 기능을 실행하는 멀티 프로세스 사용하는 경우 필요하지 않습니다 프로세스가 끝나면.

Matplotlib 오류로 인해 메모리 누수가 발생합니다. 그 메모리를 어떻게 확보 할 수 있습니까?

업데이트-해결책 :

이 stackoverflow 게시물은 다음 명령을 사용하여 matplotlib 객체에서 사용하는 메모리를 해제 할 수 있다고 제안했습니다.

.clf(): 루프에서 플로팅 할 때 Matplotlib의 메모리 부족

.close(): Python matplotlib : Figure 크기를 지정할 때 메모리가 해제되지 않음

import gc
gc.collect()

다음은 솔루션을 테스트하는 데 사용한 예입니다.

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()

셀러리와 상관없이 함수가 누출되지 않도록하기 위해 작업 함수를 여러 번 실행하려고 했습니까? django.settings.DEBUG가 False로 설정되어 있는지 확인하십시오 (연결 개체는 DEBUG = True 일 때 메모리에 모든 쿼리를 보유합니다).

참조 URL : https://stackoverflow.com/questions/7101404/how-can-i-release-memory-after-creating-matplotlib-figures

반응형