Python/Advanced 17

[Python] 가상환경, 패키지 관리 모듈 정리 (pyenv, pipenv, poetry, venv)

pyenv 👉 pyenv란? 동일 OS 내에서 Python을 여러 버전 별로 관리할 수 있는 도구 👉 pyenv 특징 공식문서에 따르면 window는 지원을 하지 않음 (Linux나 Mac) virtualenv를 통해 가상환경 생성 및 관리 (같이 설치됨) Github : https://github.com/pyenv/pyenv ex) 현재 로컬에 Python 3.10 버전을 사용중인데, 3.6 버전으로 프로젝트 진행 필요 ex) 특정 파이썬 버전을 pyenv로 설치하고 삭제가능 👉 pyenv 설치 방법 pyenv 설치는 다음 공식문서를 참고 https://github.com/pyenv/pyenv#homebrew-in-macos 👉 pyenv 주요 명령어 # pyenv 설치 가능한 python 버전 확인 ..

Python/Advanced 2023.02.11

[Python 비동기] (3) Library, Framework 특징 비교

비동기(Asynchronous)란? 👉 Sync vs Async 차이 Synchronous : 함수 A는 함수 B의 수행 상태를 신경쓰며, 계속 상태를 체크 (완료됬는지) Asynchronous : 함수 A는 함수 B의 수행 상태를 신경쓰지 않고, B 혼자 알아서 진행 후 Callback 반환 즉, 호출된 함수(B)를 호출한 함수(A)가 신경쓰는지, 호출된 함수(B)가 알아서 하는지에 따라 동기/비동기 👉 비동기의 가장 큰 장점 주어진 자원을 최대한 활용하여, 순차 코드, 일괄 처리 보다 I/O 부하를 더 빠르게 처리할 수 있다는 점 즉 비동기란, 실행 작업의 완료 Callback 도착 전까지 메인 프로세스/스레드는 멈추지 않고, 다른 작업을 수행하며 주어진 자원을 최대한 활용하는 것 👉 비동기라는 동기..

Python/Advanced 2023.02.09

[Python 비동기] (2) Generator, Async/await 코루틴 코드 비교

이전 글에서는 Python의 코루틴, Async/await 용어 등에 대해 이해해보았다. (개념과 설명에 대한 이해는 이전글 참조) https://yubi5050.tistory.com/234 [Python 비동기] (1) 코루틴, Async/await 용어 이해 Python 비동기 배경 1. python 은 동기 기반으로 설계된 언어로 대부분의 내장 API들이 동기로 작동 2. python 의 비동기 방식(코루틴)들은 Generator를 이용해 비동기 코드를 작성함 3. python 3.4에 asyncio 라 yubi5050.tistory.com 이번 글에서는 Python 코루틴 구현을 위한 Generator와 asyncio 라이브러리의 async/await 구문을 구현 및 비교해본다. 코드 예제 - G..

Python/Advanced 2023.02.09

[Python 비동기] (1) 코루틴, 비동기 관련 용어 이해

Python 비동기 배경 1. python 은 동기 기반으로 설계된 언어로 대부분의 내장 API들이 동기로 작동 2. python 의 비동기 방식(코루틴)들은 Generator를 이용해 비동기 코드를 작성함 3. python 3.4에 asyncio 라이브러리가 표준으로 채택 4. python 3.5에 async/await 키워드가 추가되며, 비동기 프로그래밍이 가능해짐 과거의 Python 비동기 구현은 generator를 이용해 Coroutine을 구현하는 것 현재의 Python 비동기 구현은 asyncio 라이브러리의 async/await 구문을 사용하여 구현하는 것 ※ 여기서 과거란 python 3.5 버전 이전의 방식을 뜻함 Python 비동기 관련 용어 키워드 Subroutine : 특정 프로그램..

Python/Advanced 2023.02.08

[Python 심화] Python의 GIL과 느린 이유

Python이 느린 이유 🎈 1. 파이썬은 C, Java와 달리 동적 타입 언어이다. 정적 타입 언어는 사전에 자료형을 명시하는 경우이고, 동적 타입 언어란 자료형을 명시하지 않는 경우의 언어이다. 아래 덧셈 연산으로 비교해보면 파이썬이 훨씬 더 절차가 복잡한 것을 알 수 있다. C언어 파이썬 int a=1; int b=2; int c = a+b; a=1 b=2 c=a+b 컴파일(자료형 판단 완료) => a에 1할당 => b에 2할당 => 덧셈 연산 호출 => 결과 c에 할당 a에 1할당 => a타입판단 => a 값 정수 1 설정 => b에 1할당 => b타입판단 => b 값 정수 2 설정 => 덧셈 연산 호출 => 객체 c 생성 => c자료형 정수 설정 => c 값 정수 3 설정 🎈 2. 파이썬은 인터..

Python/Advanced 2022.08.24

[웹서버] WebServer와 WAS 차이

Web Server 란? WebServer는 HTTP, HTTPS를 통해 Web Browser와 직접 통신하며 정적 콘텐츠(html, css, js 등)를 클라이언트에 제공해주며 WAS의 부하를 줄이기 위해, 기본적인 도메인 라우팅 관리, 부하 로드밸런싱, ssl 등의 작업 수행 하여 was의 역할 분담 등의 목적으로 주로 사용 된다. 주로 많이 언급되는 WebServer로는 Apache Tomcat, Nginx, IIS(Window) 등이 있다. WAS (Web Application Server) WAS (Web Application Server)는 외부로부터 Traffic을 받아 중간 Interface(Gunicorn, uWSGI 등)에서 Web Application으로 Request를 전달하고, R..

Python/Advanced 2022.08.23

[배포] CGI vs ASGI vs WSGI 비교

Python Web Framework들은 Web Server와 효율적으로 통신하기 위해 잘 정의된 인터페이스가 필수적이다. 해당 Interface는 CGI => WSGI => ASGI 순으로 발전 해 왔으며 최근 파이썬 프레임워크 들은 ASGI를 지원한다. Web Server란? Webserver는 하드웨어 적인 의미와 소프트웨어 적인 의미를 함께 가지고 있으며 Client의 요청을 최초 수신하여 Web Applicaton 과 상호 소통 하고, Response를 전달해주는 역할을 한다. 대표적으로는 Apache HTTP Server와 Nginx가 있다. CGI (Common Gateway Interface ~2003) 서버와 웹 애플리케이션 간에 데이터 교환에 대한 표준 컨벤션 CGI 동작 순서 1) W..

Python/Advanced 2022.07.15