asyncio : 단일 스레드 기반의 Nonblocking 비동기 코루틴 완전 정복

asyncio에 의한 단일 스레드 병렬 작업 지난번 concurrent.futures를 소개한 글에서 파이썬 3에서부터 멀티스레딩/멀티프로세싱에 대해 새로 도입된 고수준 API에 대해 살펴봤다. 이 새로운 API는 함수 호출을 병렬로 처리하는 동작을 사용하기 쉽게 만들 뿐 아니라, 직접 스레드를 제어하는 것이 아닌 Future 객체를 사용함으로써 자바스크립트의 Promise 개념을 도입한 것으로 평가할 수 있다고 보았다. 새로운 병렬처리 API와 더불어 Future 클래스가 도입된 것이 파이썬 3.2였다. Future 개념의 도입은 스레드를 관리하고, 다른 스레드에서 돌아가는 작업에 대해서 리턴을 동기화하는 등의 작업들이 매우 골치아팠던 것을 그 자체를 객체로

편집거리 (단어의 유사도 분석)

편집거리 구하기 computer라는 단어와 commuter라는 단어는 매우 유사한데, p -> m으로 한글자만 변경하면 처음 단어에서 두 번째 단어로 바뀌게 된다. 비슷하게 sport라는 단어는 sort라는 단어로 바꾸기 위해서는 p 한글자를 지우면 된다. 혹은 sort에서 p한 글자를 추가하면 된다. 편집거리는 두 문자열 s1, s2에서 몇 번의 추가/삭제/변경으로 변환할 수 있는가를 나타내는 개념이다. 이러한 변경에는 글자를 교환하기 글자를 삽입하기 글자를 삭제하기 의 세 종류의 변경 연산을 할 수 있다. 이를 이용해서 두 단어 사이의 편집거리를 구하는 재귀 함수를 생각해보자. d(”, ”) = 0

파이썬을 명령 프롬프트에서 실행하는 방법

파이썬은 어떻게 명령줄에서 실행될까? 파이썬을 실행하고 나서 cmd라 불리는 명령 프롬프트를 열고 python 이라 입력하고 엔터를 치면 아래와 같이 대화형 쉘 형식으로 파이썬 해석기가 실행된다. 사실 보통은 이게 실행이 안될 때 왜 안되지? 라고 생각하기는 쉬워도 잘 될 때는 왜되지? 라고 생각해보지는 않는다. 예를 들어 구글 크롬을 설치했다고 하자. 우리는 늘 시작메뉴나 바탕화면의 아이콘을 사용해서 크롬을 열고 있지만, 크롬 그 자체 역시 윈도우용 프로그램의 실행파일이며, 이러한 바로가기 아이콘들은 해당 실행파일과 연결되어 있어서 이를 더블클릭하는 것은 결과적으로 해당 exe 파일을 실행하는

zmq-how to

how to use zmq 컨텍스트 zmq 라이브러리를 사용할 때, 반드시 컨텍스트 객체를 생성해야 한다. import zmq ctx = zmq.Context() 컨텍스트는 소켓과 달리 스레드안전하다. 단일 앱은 하나 이상의 컨텍스트를 만들 수 있다. 소켓만들기 소켓은 컨텍스트로부터 생성한다. socket = ctx.socket(zmq.REP) zmq.REP는 메시징패턴을 지정하는 값이다. 이는 [[zmq 메시징패턴]]을 참고. zeromq 메시징패턴 메시징 패턴은 상호연결된 시스템간의 커뮤니케이션 플로우를 묘사하는 구조적 패턴을 말한며, zmq는 이러한 패턴의 장점을 살릴 수 있는 최적화된 소켓들을 제공한다. ZMQ의 각 패턴은 네트워크 위상에 대한 제한들을 정의하고 있으며, 이러한 패턴들은 스케일을