chapter09
-
고성능 파이썬 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.fr..
-
고성능 파이썬 Chapter 09 - Multiprocessing 모듈 part 1 (~9.4절)STUDY/고성능 파이썬 2025. 1. 12. 15:47
들어가며파이썬은 기본적으로 1개의 CPU 코어만을 사용하도록 되어 있어서 이번 과를 통해 더욱 효율적으로 프로그램을 돌릴 수 있도록 해주는 방법을 배울 수 있기를 바란다.이 장에서 배울 내용- multiprocessing 모듈이 제공하는 기능- 프로세스와 스레드의 차이- 프로세스 풀의 적절한 크기를 정하는 방법- 작업 처리를 위해 영속적이지 않은 큐를 사용하는 방법- 프로세스 간 통신의 비용과 효과- 여러 CPU를 사용해 numpy 데이터를 처리하는 방법- joblib을 사용해 병렬화하고 캐시된 과학 계산 작업을 단순화하는 방법- 데이터 손실을 막기 위해 락을 사용해야 하는 이유파이썬 프로그램을 실행시키면 기본적으로 1개의 CPU가 모든 동작을 수행한다. 하지만 2000년대 후반 이후 거의 모든 CPU는..