Programming/PYTHON 3

OOP 스럽게 Python 작성하기

추상 클래스의 선언과 구현 그리고 생성자 주입 class Switchable(ABC): @abstractmethod def turn_on(self): pass @abstractmethod def turn_off(self): pass class LightBulb(Switchable): def turn_on(self): print("Lightbulb: turned on") def turn_off(self): print("Lightbulb: turned off") class Fan(Switchable): def turn_on(self): print("Fan: turned on") def turn_off(self): print("Fan: turned off") class PowerSwitch: def __ini..

Programming/PYTHON 2023.05.31

map Iterable Iterator

map(function, iterable, *iterables) map() is a built-in Python function that applies a function to each element of an iterable and returns a new iterable containing the results. map(function, iterable_object) map 함수의 첫번째 인자로 함수를 받고 두번째 인자로 iterable 객체를 받는다. python에서 iterable_object 에는 list, tuple, range, str, dict 그리고 set이 있다. Iterable object iterable object 와 iterator object의 큰 차이는 iterable obj..

Programming/PYTHON 2023.02.14

GIL(Global interpreter Lock)

GIL은 python 을 구현한 CPython에서 GIL를 제공함으로써 GC에서 reference count가 0이 되지 않는 상황을 방지하기 위해 도입되었다. That only one thread can execute Python bytecodes at a time. 문장에서 보면 알 수 있듯이 여러개의 쓰레드가 있다 하더라도 오직 하나의 쓰레드만 파이썬 코드를 실행시킬 수 있다. 앞서 말했지만 하나의 쓰레드만 파이썬 객체에 접근하게 함으로써 메모리를 잘 관리하는데 그 탄생 배경이 있다. 하지만 공유 자원과 관련해 싱글 스레드만을 허용했다고 해서 동기화가 잘 적용되는 것은 아니다. 동기화를 적용시키게끔 코드로 녹여내야 한다. 동기화가 잘 적용되지 않는 이유는 GIL이 하나의 thread만을 허용하면서 ..

Programming/PYTHON 2023.02.04