파이썬의 새로운 병렬처리 API – Concurrent.futures

어떤 처리량이 많은 작업을 작은 단위로 쪼개거나, 현재 진행되는 흐름과 독립적으로 병렬적인 처리를 하기 위해서 멀티스레드나 멀티프로세스를 사용하는 경우가 (지금까지는 드물지만) 종종 있다.

이전에는 Threading.ThreadMultiprocessing.Process 를 이용해서 각각의 스레드나 별도 프로세를 제어하는 방식을 사용했다. 파이썬 3.2에서 이러한 비동기 실행을 위한 API를 보다 고수준으로 만들고 사용하기 쉽도록 개선한 concurrent.futures 모듈이 도입되었다.

이 새로운 API가 기존의 스레드나 멀티프로세싱 모듈을 완전히 대체하지는 않는다. 이 모듈은 내부적으로 _thread와 같은 기존 API에 의존하고 있고, 스레드나 프로세스 제어에 대한 전반적인 방법을 제공하지도 않는다. 다만 자바스크립트 진영의 Promise 개념에 자극받아 탄생한 것으로 별도의 스레드/프로세스에서 처리한 결과를 받는 동기화 부분을 간단하게 만들어준다는 장점이 있다.

파이썬의 새로운 병렬처리 API – Concurrent.futures 더보기