일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 가상환경
- S3
- TCP
- 데이터베이스
- 운영체제
- 정리
- Django
- Go
- http
- 컴퓨터네트워크
- 데브코스
- 데이터 엔지니어링
- PYTHON
- 종류
- Docker
- sql
- 자료구조
- 파이썬
- HADOOP
- airflow
- dockerfile
- TIL
- 데이터 파이프라인
- 컴퓨터 네트워크
- redshift
- AWS
- 데이터엔지니어링
- linux
- airflow.cfg
- 데이터 웨어하우스
- Today
- Total
목록Programming Language/Python (9)
홍카나의 공부방
https://youtu.be/t6I4Gs_VjGU Global Interpreter Lock(GIL)GIL은 여러 개의 쓰레드가 파이썬 바이트코드를 한 번에 하나만 사용할 수 있도록 Lock을 거는 기법을 의미한다.즉, 파이썬이 실행될 때는 특정 시점에 오직 하나의 쓰레드만 실행된다는 것이다.어떻게 보면 OS에서의 쓰레드 개념을 적극적으로 활용할 수 없게 되는 것이다.그래서 멀티쓰레드를 의도하여 프로그램을 설계해도, GIL 때문에 한 번에 하나의 쓰레드만 실행하게 된다는 것이다. 왜 GIL을 쓰나?먼저 파이썬의 메모리 관리 방식을 알아본다.파이썬은 레퍼런스 카운팅 기법을 이용하여 메모리를 관리한다.레퍼런스 카운팅은 Python에서 생성된 객체가, 특정 객체를 가리키는 참조의 수를 추적하는 Count 변..
ClassMethod StaticMethod처럼 클래스의 인스턴스 없이 호출할 수 있다는 점은 동일하다. ClassMethod는 메소드 안에서 클래스 속성이나 메소드에 접근해야 할 때 사용한다. 클래스 메소드는 다음 코드처럼 메소드 위에 @classmethod를 붙인다. 그리고 첫 번째 매개변수에 cls를 지정해야 한다. ( 두번째 메소드 부터는 상관없다. ) 앞에 @이 붙은 것을 데코레이터라고 하며, 메소드에 추가 기능을 구현할 때 사용한다. 위 매개변수에서 cls가 해당 class를 의미하는 것이다. class User: total = 0 # __init__에 만들어주지 않았으므로, 클래스 속성 def __init__(self): User.total += 1 # 인스턴스가 만들어질 때 class 속성..
C나, C++와 같은 다른 언어에는 분기 처리를 할 수 있는 switch문이 존재한다. switch (expression) { case value1: // 처리 로직 break; case value2: // 처리 로직 break; case value3: // 처리 로직 break; default: // 기본 처리 로직 break; } 그런데 파이썬은 switch 문이 내장되어 있지 않다. 그래서 switch 문을 대신하여 if-elif-else를 사용하여 처리하곤 한다. input = 2 if input == 0: # Do something elif input == 1: # Do something else: # Do something 그런데 만약, if-else문을 제외하고 switch처럼 분기 처리를 ..
if __name__=="__main__": # your codes here. if __name__=="__main__"? 해당 모듈이 임포트된 경우가 아니라, 인터프리터에서 직접 실행된 경우에만 if문 이하의 코드를 돌리라는 명령이다. 파이썬 모듈을 실행할 수 있는 방법은 직접 실행하거나 다른 모듈에서 임포트하여 동작시키는 방법 2가지가 있다. 아래 코드를 살펴보자. # main_test.py def func(): print("function working") if __name__ == "__main__": print("직접 실행") print(__name__) else: print("임포트되었음") print(__name__) 아래 명령으로 인터프리터에서 위 코드를 직접 실행시키면 __name__ 변..