문제

나는 약 40k 이미지 각각에 대해 4 개의 thumnail을 벌이하려고합니다. Sorl-Thumbnail 내 django 앱의 경우. ImageWithHumbnailsfieldFile과 함께 모든 Django 객체를 반복 한 다음 Generate_Thumbnails () 함수를 호출합니다.

이것은 수백 개의 반복 후에 메모리가 부족하고 루프가 '메모리 오류'로 충돌한다는 점을 제외하고는 잘 작동합니다. Sorl-Thumbnail은 PIL을 사용하여 엄지 손가락을 생성하기 때문에 PIL은 엄지를 생성 할 때 사용 된 모든 메모리를 반환하지는 않습니다.

이 문제를 피하는 방법, 예를 들어 PLIL이 더 이상 필요하지 않은 메모리를 반환하도록함으로써 아무도 있습니까?

내 코드는 단순히 다음과 같습니다.

all = Picture.objects.all()
for i in all:
    i.image.generate_thumbnails()

함수가 생성됩니다 여기, 라인 129.

조언에 미리 감사드립니다!

남자 이름

도움이 되었습니까?

해결책

귀하의 문제는 Django가 쿼리 세트 결과를 루프 할 때 쿼리 세트 결과를 캐시하는 방법과 관련이 있습니다. Django는 모든 객체를 메모리에 유지하므로 다음에 동일한 쿼리 세트를 반복 할 때 모든 데이터를 얻기 위해 데이터베이스를 다시 누르지 않아도됩니다.

당신이해야 할 일은 사용하는 것입니다 iterator () 방법. 그래서:

all = Picture.objects.all().iterator()
for i in all:
    i.image.generate_thumbnails()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top