개발/Python
-
[Python] import vs runtime개발/Python 2022. 9. 26. 16:39
Python은 Hybrid 언어로 Interpreter를 이용한 Compile이 동작(import time)하고 난 뒤 Runtime이 동작하게 됩니다. import time import time 시 python 파일의 소스코드를 위에서부터 파싱 및 실행을 위한 Byte code를 만들어줍니다. 즉, 파일 내의 Function과 Class method를 제외한 코드들을 실행합니다. Interpreter 영역 runtime 모든 Code가 실행되는 순간 import time vs runtime 이 때 Import와 runtime에 대한 이해가 없다면, 에러를 마주 할 수 있습니다. 아래 코드에서 어떤 동작 결과가 예상하여 봅시다. #a.py import b def function_a(): print('fu..
-
[Python] - Requirements개발/Python 2022. 9. 26. 15:18
Dependency 다른 사용자들이 같은 코드를 돌리려고 하여도 각자의 Env가 다르기 때문에 Package Library들을 사용하기 위해서는 필수적인 Library들을 확인하고 설치하여 주어여한다. freeze 현재의 ENV의 설정 파일을 출력하여 준다. $ pip freeze #Output certifi==2022.6.15 charset-normalizer==2.1.0 idna==3.3 psutil==5.9.0 Pympler==1.0.1 requests==2.28.1 urllib3==1.26.9 list freeze가 가지고 있지 않은 편집할 수 있는 목록까지 보여준다. $ pip list #Output Package Version ------------------ --------- certifi ..
-
[Python] - Cyclic reference개발/Python 2022. 9. 19. 01:47
Python은 Garbage Collection 관리 시 Reference를 Counting하는 방식 우선시하여 메모리를 다룹니다. 이 떄 발생하는 문제점인 Cyclic reference를 다루어보겠습니다. 순환 참조 ( Cyclic reference ) 직관적이며, Object를 카운터하며 0이 되면 Object를 삭제하는 식으로 GC(reference counting)가 동작한다. 해결 할 수 없는 한가지 경우가 생기는데, 두 객체가 서로를 참조하게 되는 경우에서 하나를 삭제하더라도 나머지 Object의 Count는 1개 이기 때문에 Object는 삭제 할 수 없습니다. 예시 my_dict1 = {} my_dict2 = {} my_dict1['dict2'] = my_dict2 my_dict2['dic..
-
[Python] - Garbage Collection개발/Python 2022. 9. 19. 01:47
GB( Garbage Collect ) 현대적인 언어에서 필수적인 존재로, 메모리를 관리에 도움을 준다. C#, JS, Python 등의 언어는 GC를 기본적으로 제공하며, C, C++과 같은 언어에서는 malloc(), free()와 같은 저수준의 메모리 관리 함수를 제공한다. GC를 왜 공부해야 하나? GC는 메모리를 자동으로 관리한다. 자동으로 메모리를 관리하여 최적화가 덜 되어있다. 인스타그램은 Python GC를 사용하지 않는다. (Instagram이 Python garbage collection 없앤 이유 참고) 기존 메모리 관리 문제점 1. 메모리가 남아있는 경우 2. 사용 중인 메모리 삭제 Python의 Garbage Collection Cpython에서의 메모리 관리 측면 Referenc..
-
[Python] - 동작원리( Build , hybrid )개발/Python 2022. 9. 18. 23:55
Python 작업 시, 순환 참조를 하게 만들면 Garbage가 쌓이게 되고 이게 증가하다 보면 실제 사용되는 메모리에 영향을 끼쳐 OOM이 나는 경우가 발생합니다. 이 때문에 Gabage Collection의 동작원리를 파헤치기 위해 어떻게 동작하는지 부터 정리해보려고 합니다. Python의 문법과 Compiler 전공 수업을 들은 바가 있기 때문에 상세한 내용은 생략하고 진행하겠습니다. 1. Build란? 컴퓨터가 실행 가능한 파일로 만드는 것을 Build라고 합니다. 컴퓨터는 0과 1만 이해 할 수 있습니다. 우리가 작성하는 코드(Python, C, Java, Ruby .. ) 과 같은 언어는 고급언어로 컴퓨터가 이해 할 수 있는 기계어로 변경해주는 과정을 말합니다. 일반적으로 Build하는 과정을..
-
[Python] - Decorator개발/Python 2022. 9. 2. 15:13
Decorator A decorator in Python is a function that takes another function as its argument, and returns yet another function Decorators can be extremely useful as they allow the extension of an existing function, without any modification to the original function source code. Decorators is similar to Closure , Decorator is same Closure which parameter is function and add logic before and after fun..
-
[Python] - Closure개발/Python 2022. 7. 28. 20:59
Closure 1. Nested functions A function that is defined inside another function is known as a nested function. Nested functions are able to access variables of the enclosing scope. In Python, these non-local variables can be accessed only within their scope and not outside their scope. But Closure can be access non-local variables #nested function example def nested_func(text): temp = text def te..
-
[Python] - First class functions개발/Python 2022. 7. 28. 17:55
1. First class Obejct Define 1. You can store them in Variable , Data Structure(list,dictionary .. ) 2. You can pass the function as a parameter to another function 3. You can return the function from a function. 2. First class functions Python support first class functions, it means function is instance of Object. First class functions includes First class Object properties. First class functio..