-
고성능 파이썬 Chapter 09 - Multiprocessing 모듈 part 2 (9.5절~)STUDY/고성능 파이썬 2025. 1. 19. 18:34
9.5절 부터의 내용은 생성된 프로세스간의 통신을 하는 내용이다.
원하는 값을 찾는걸 다른 프로세스에서 끝냈다면, 더 진행할 일이 없을텐데 다른 프로세스의 진행 상황을 알지 못하고 수행한다면 모든 프로세스가 종료 되어야 비로소 프로그램이 종료되게 되기 때문이다.
프로세스간의 통신으로 인한 오버헤드 또한 고려사항이다. 오히려 오버헤드가 많아지면서 더 느려지는 상황이 생길 수 있다.
이 책에서 제안하는 방식은
MPI(via MPI4PY, 책에서 다루지는 않음), pool 사용, flag 사용, redis, Raw Value, mmap을 이용한 방법이다.
또한 위의 방식들은 단순히 flag 값만을 주고 받았는데numpy 배열 전체를 프로세스간 공유하여 메모리를 효율적으로 이용하는 방법에 대해서도 다룬다. (np.frombuffer 이용)
여러 프로세스에서 파일을 동시에 접근해서 수정한다면 제대로 되지 않는다. 따라서 파일에 락을 걸어야 한다. 마찬가지로 공유하는 값이 필요하다면 multiprocessing.Value 객체를 이용하고, lock을 이용하여 값에 접근한다.
'STUDY > 고성능 파이썬' 카테고리의 다른 글
고성능 파이썬 Chapter 11 - RAM 덜 사용하기 (0) 2025.02.09 고성능 파이썬 Chapter 10 - 클러스터와 작업 큐 (0) 2025.02.02 고성능 파이썬 Chapter 09 - Multiprocessing 모듈 part 1 (~9.4절) (0) 2025.01.12 고성능 파이썬 Chapter 08 - 비동기 I/O (1) 2025.01.05 고성능 파이썬 Chapter 7 실습 (0) 2024.12.30