파이썬
del 과 가비지 컬렉션
del 과 가비지 컬렉션
2020.12.02cpython 의 경우 가비지 컬렉션은 주로 참조 카운트(reference count)에 기반한다. refcount 가 0이 되자마자 cpython이 객체의 __del__() 메세드를 호출하고 객체에 할당되어 있는 메모리를 해제함으로써 객체가 제거된다. 파이썬 구현에서는 참조 카운트에 기반하지 않는 더 정교한 가비지 컬렉터를 사용하므로, 객체에 대한 참조가 모두 사라진 경우에도 __del__() 메서드가 바로 호출되지 않을 수도 있다. import weakref s1 = {1, 2, 3} s2 = s1 def bye(): print("Gone with the wind...") ender = weakref.finalize(s1, bye) print(ender.alive) del s1 print(ender...
간단한 데커레이터 구현하기
간단한 데커레이터 구현하기
2020.11.28import time def clock(func): def clocked(*args): # 내부 함수 clocked() 가 임의 개수의 위치 인수를 받을 수 있도록 정의한다. t0 = time.perf_counter() result = func(*args) # clocked() 에 대한 클로저에 자유 변수 func가 들어가야 이 코드가 작동한다. elapsed = time.perf_counter() name = func.__name__ arg_str = ', '.join(repr(arg) for arg in args) print('[%0.8fs] %s(%s) -> %r' % (elapsed, name, arg_str, result)) return result return clocked 이함수는 데커레이트..