전체 글 (253) 썸네일형 리스트형 [Python] Python 병렬처리 - threading (1) [threading - Thread-based parallelism] threading 모듈은 _thread 모듈 위에 high-level threading interface를 구축하는 모듈이다. ■ Cpython implementationo detail CPython에서는 GIL로 인해서 하나의 파이썬 코드에서 하나의 스레드밖에 사용할 수 없다. 그렇기 때문에 멀티 코어의 연산자원을 효율적으로 사용하기 위해서는 multiprocessing이나concurrent.futures.ProcessPoolExecutor를 사용하는 것이 좋다. 반면에 I/O 병목 작업을 동시에 작업하는 경우에는 threading을 사용하는 것이 유리하다. ■ threading functions threading.active_cou.. [NATS] NATS 개념 정리 NATS 란? NATS 란 오픈소스 메세지 큐 서비스의 한 종류로 메인 서버는 Go 언어로 구현되어 있고, 클라이언트들은 다양한 언어에 대한 라이브러리들을 지원해주고 있다. 기본적으로 Publisher와 Subscriber로 구성되어 있으며 인코딩 된 메세지를 publisher가 송신하면 하나 또는 여러 개의 subscriber에 의해서 수신되고 디코딩 되어진다. NATS는 환경, 언어, cloud / on-premise 시스템 등 프로그램 간의 서로 다른 환경에 상관없이 쉽게 통신할 수 있도록 구현되어 있다. Client들은 URL을 통해서 서버에 접속하고, subject를 통해 메세지를 전송한다. NATS 서버는 at most once의 QoS를 제공한다. 만약 특정 subject에 대한 subscr.. [Python] Asterisks(*) in Python 파이썬 예제들을 찾아보던 중에 **option과 같은 문법을 발견하였다. 마치 c언어의 포인터와 같이 변수의 앞에 위치하고 있는 asterisk의 의미에 대해서 조사하면서 이외에 파이썬에서 asterisk를 사용하는 방법들에 대해서 살펴보았다. 1. 곱셈, 거듭제곱 연산 기본적으로 곱셈을 위한 연산자로 *를 많이 사용한다. 2 * 5# 10 또한 asterisk를 두개 붙여 사용하여서 거듭제곱 연산자로 사용한다. 2 ** 3# 8 4 ** 2# 16 2. iterable arguments의 unpacking 함수의 argument로 iterable한 값이 입력되었을 때 *를 사용해서 unpacking 할 수 있다. fruits = ['lemon', 'pear', 'watermelon', 'tomato'].. [Docker] 도커 개념 정리 Docker 도커는 어플리케이션의 개발, 실행 관리 등을 할 수 있도록 해주는 오픈 플랫폼이다. 주로 개발 환경을 관리하는 가상 환경과 같은 플랫폼으로 개발 인프라를 관리하는데에 사용한다. 도커를 사용하여 개발 인프라를 관리하고 이를 기반으로 개발, 배포 등을 진행하여 사용자의 인프라에 상관없이 어플리케이션을 실행할 수 있도록 한다. The Docker platform 도커는 컨테이너라고 부르는 독립된 환경을 통해서 어플리케이션을 패키징하고 실행할 수 있다. 컨테이너를 사용하여서 현재 로컬의 환경과는 상관없이 어플리케이션 실행에 필요한 독립된 개발환경을 구축할 수 있다. 또한 구축된 컨테이너를 공유, 배포할 수 있다. What can I use Docker for? ■ application CI/CD -.. [Python] 비동기 프로그래밍 (asyncio) ■ Synchronous vs Asynchronous - Synchronous programming (동기 프로그래밍) : 주어진 task들을 순차적으로 실행하는 프로그래밍 방식. 하나의 작업이 수행중이면 그 다음 작업은 수행 완료까지 대기한다. - Asynchronous programming (비동기 프로그래밍) : task들을 병렬적으로 수행하는 프로그래밍 방식. 먼저 실행된 작업이 완료되지 않아도 다음 작업이 대기하지 않고 수행된다. ■ Event Loop 이벤트 루프는 작업들을 루프(반복문)를 돌면서 하나씩 실행시키는 역할을 합니다. 만약 실행된 작업이 특정한 데이터를 요청하고 응답을 기다려야 한다면, 이 작업은 다시 이벤트 루프에 통제권을 넘겨줍니다. 통제권을 받은 이벤트 루프는 다음 작업을 실.. [MQ] Message Queue란? Message Queue란? MOM (Message Oriented Middleware)를 구현하여 서버와 클라이언트 사이의 통신을 비동기 메시지 처리 방식으로 처리하는 시스템이다. 서버와 클라이언트 사이의 통신에서 이미지 처리, 비디오 인코딩, 대용량 데이터 처리 등과 같이 리소스의 소모가 큰 데이터 통신을 진행해야 하는 경우 처리할 수 있는 양이 한정되어있기 때문에 요청의 지연이나 손실, 서버의 다운 등이 발생할 수 있는데, MQ 서비스는 서버와 클라이언트 사이의 미들웨어로 비동기 메시지를 사용하여서 이런 통신들을 처리하는데 사용합니다. 기존에 분산되어있던 데이터 처리를 MQ의 Message Broker 한 곳에서 처리하도록 두어서 로드밸런싱과 MQ clustering 기능 등을 사용하여서 작업을 분.. [git] git add, commit, push 취소하는 방법 git을 통해서 프로젝트 버전 관리를 하는 도중에 실수로 push를 진행해서 remote repository (github)에 업데이트 되었다. 이를 취소하기 위해서 git push 등을 통해 repository에 업데이트 된 내용들을 취소하는 방법을 찾아보았다. 1. git add 취소하기 git add [file name] 명령어를 사용하는 경우 파일의 변경사항이 local의 index에 staging 상태로 올라가게 된다. 이때 reset 명령어를 사용해서 unstaging 상태로 원복할 수 있다. $ git reset HEAD [file name] 입력된 file name에 대해서 staging 되어있는 변경사항이 unstaging 된다. file name을 따로 입력하지 않는 경우에는 현재 st.. [Python] 프로젝트 패키징 & 배포 패키징이란? 패키징이란 모듈별로 생성한 실행 파일들을 하나로 합쳐서 배포 및 설치가 가능한 파일을 만드는 것이다. 파일을 패키징하는 이유는 다른 환경에 소프트웨어를 배포하기 위함이기에 다음과 같은 질문에 대해서 고려하여 패키징을 진행해야한다. - 소프트웨어를 사용할 사람이 누가 될 것인가? 패키징한 소프트웨어를 누가 설치할 것인가? - 소프트웨어가 어떤 환경에 배포되고 실행될 것인가? (서버, 데스크탑, 모바일 등등) - 소프트웨어는 독립적으로 설치가 될 것인가, 아니면 다른 배포 시스템에 연계되어서 설치될 것인가? 패키징한 파일을 배포할 환경에 대한 다양한 요인들에 대해서 고려해서 패키징을 진행해야한다. Python packaging 1. metadata 설정 1-1. setup.py 설정 setup... 이전 1 ··· 25 26 27 28 29 30 31 32 다음 목록 더보기