먼저 동시성에 대한 개념, 쓰레드, 프로세스, 비동기에 대한 내용은 알고 있다고 가정하고 실제 코드 사용법에 대해 적어두었습니다. * Pool.map() def _map (): pool = multiprocessing.Pool() pool.map(summing , [ 10_000_000 + i for i in range ( 5 )]) pool.close() pool.join() # optional (하단에서 설명) 위에서 볼 수 있듯이 map() 함수는 - Python의 빌트인 함수 map처럼 인자로 실행할 함수, 인자(iterable) 를 취한다. - 프로세스에게 함수와 iterable의 인자를 분배하고 각 프로세스가 그 함수를 처리하도록 한다. 사람 언어로 표현하면 일감을 처리하는 방법과 일감에 필요한 재료를 각 일꾼에게 분배하는 것이라고 생각하면 된다. - pool을 생성하면 최초에 프로세스의 개수를 지정하거나 위 예시처럼 비어있도록 둘 수 있는데 그냥 비어있도록 두는 경우에는 현재 코드가 돌아가는 machine의 CPU core 갯수만큼의 process가 생성된다. * 예시) 3곳의 레스토랑에 전화해서 예약을 하려고 하는데 직원 3명(프로세스 3개)에게 이를 시키는 상황을 코드로 표현하면 아래와 같다. def call_restaurant (phone_num): print ( f'Calling { phone_num } to make a reservation!' ) def make_reservations (): pool = multiprocessing.Pool() pool.map(call_restaurant , [ 1 , 2 , 3 ]) # 전화번호는 귀찮으니 1,2,3이라고 가정했다. pool.close() 1) A에게 (전화해서 식당 예약하기, 전화번호1) 2) B에게 (전화해서 식당 예약하기, 전화번호2) 3)...