CS/PROGRAMMING2 [Python] GIL, 파이썬 메모리 관리 Global Interpreter Lock (GIL) GIL은 말 그대로 Interpreter가 한 스레드만 하나의 코드를 실행 시킬 수 있도록 Lock을 걸어주는 것. 따라서 하나의 스레드에 모든 자원을 사용하도록 하고 나머지 쓰레드에는 Lock을 건다 파이썬으로 멀티쓰레딩을 사용하면 오히려 소요시간이 늘어나는 경우가 종종 있음 import threading import random import time def testing(): max([random.random() for _ in range(50000000)]) st = time.time() for i in range(2): testing() print('single: ', time.time()-st) threads = [] st = .. 2021. 11. 5. [Python] Iterator, Generator Iterable list, set, dict, tuple, str 등과 같이 말그대로 반복 가능한 객체 __iter__() 함수를 가지고 있음 (else, object is not iterable 에러 발생) iter(Iterable)을 통해 Iterator 반환 Iterator Iterable object를 하나씩 차례대로 꺼낼 수 있는 객체 __next__() 함수를 가지고 있음 (else, object is not iterator 에러 발생) next(Iterator)를 통해 iterable object 내부의 값을 하나씩 불러옴 모든 값을 순회한 후에 next() 사용시 StopIteration 예외 발생 Generator Iterator의 특수한 형태, 하위 클래스 return 대신 yield .. 2021. 11. 4. 이전 1 다음