파이썬 lv3 의 py_ad_4_2.py 에서 Image를 열기만 하고 닫지는 않으셨습니다.
341
7 asked
메모리 누수가 일어날 것 같은데 코드 수정 부탁드립니다.
with 문을 써서 구현해야될 것 같은데 어떻게 수정해야될까요?
문제되는 코드
img, *images = [Image.open(f) for f in sorted(glob.glob(path_in))] # open 만 하고 닫지는 않음.
Answer 1
0
안녕하세요.
좋은 질문 감사합니다. 결론적으로 메모리 누수에 대해 크게 걱정하실 필요는 없습니다.
하지만 실제 서비스를 염두해둔 코딩이라면 말씀하신대로 정확하게 with문(컨텍스트) 등으로 자원을 회수해야해요.
위에코드에서는 파일을 닫는 타이밍이 내부 가비지 컬렉션에 따라 작동합니다.(딜레이)
또한, cpython에서는 즉시 close문이 동작해서 문제가 되지 않습니다.
실제 코드에서는 해당 코드와 같이 사용하는 것 보다는 정석으로 with 구문으로 사용을 추천드립니다.
아래는 해당 원문입니다.
t should close the file, yes, though when exactly it does so is implementation-dependent. The reason is that there is no reference to the open file after the end of the list comprehension, so it will be garbage collected, and that will close the file.
In CPython (the regular interpreter version from python.org), it will happen immediately, since its garbage collector works by reference counting. In another interpreter, like Jython or Iron Python, there may be a delay.
If you want to be sure your file gets closed, it's much better to use a with statement:
강의자료가 모두 동일한 PPT 입니다. 잘못 등록된것 같습니다.
0
56
2
나만의 패키지 만들기(1) 강의 결과물에서 이미지가 겹치는 문제는 다음과 같이 수정할 수 있을 것 같습니다
0
72
2
메타클래스 오류가 납니다
0
77
2
_ _ 관련 질문
0
70
1
변수 앞 _ 하나를 사용할때
0
142
2
가상환경 설정 시 vscode 실행 오류
0
505
2
이미지 에러 발생
0
318
1
에러발생합니다2
0
258
1
Error발생합니다1
0
285
1
pypi 배포 중 에러 발생
0
532
2
강의 부분이 틀렸네요. 수정 요청드려요!
0
467
2
logging print 순서에 대한 질문입니다.
0
271
1
@contextlib.contextmanager 어노테이션, 데코레이터
0
282
1
mount라는 의미가 정확히 무엇인지 모르겠습니다.
0
491
1
오픈소스참여-나만의 패키지 만들기
1
499
3
gitignore 파일이 없어요
0
318
1
property 사용시 동명의 속성이 이미 존재하면 어떻게 되나요?
0
269
1
variable scope 강의 Ex8 질문드립니다.
0
351
1
오픈소스참여-나만의 패키지 만들기(1)
1
567
2
s1, s2 점수 확인
0
462
2
질문
0
266
2
descriptor 변수 공유문제
0
280
1
multipledispatch 에러
0
391
1
Ex6과 Ex7 관련
0
221
1

