파비의 매일매일 공부기록

파이썬 병렬 프로그래밍 - #6 패러렐 파이썬 활용 본문

Study/Python

파이썬 병렬 프로그래밍 - #6 패러렐 파이썬 활용

fabichoi 2021. 7. 24. 23:30

이번장은 네임드 파이프(named pipe)와 프로세스로 병렬 태스크를 수행하는 패러렐 파이썬의 사용하여 구현할 예정이다.

 

프로세스 간 통신 이해

- 프로세스 간 통신(Interprocess communication, IPC)은 프로세스 사이에 정보를 교환할 수 있는 메커니즘으로 구성

- IPC 구현은 여러 가지 방법 존재. 일반적으로 선택한 실행 환경의 아키텍처에 의존

- 프로세스는 다른 프로세스의 주소 공간에 절대로 접근이 불가하므로, 네임드 파이프라고 불리는 메커니즘 사용해야 함

 

네임드 파이프

- 구현하는 특정 파일과 관련된 파일 디스크립터 사용을 통한 IPC 통신 허용

- 정보를 관리할 수 있는 방법으로 일반 파이프와 구분

- 네임드 파이프는 파일 디스크립터와 파일 시스템의 특수한 파일 사용. 일반 파이프는 메모리에 생성

 

다음은 이 전장들과 마찬가지로 파이썬에서 실제로 구현하는 예제를 소개한다.

이 부분 역시 책 내용을 참고하면 좋을 듯.

 

책의 소스를 실행해본 결과(python3, Windows 10)

parallel python의 경우 pip로 설치 불가하다.

그러므로 https://www.parallelpython.com/downloads.php에서 python3을 다운로드한 후, 설치하면 import가 가능하다.

 

그러고 나서 소스를 동일하게 적고 실행하면 오류가 나는데

os.uname()이라는 게 없어서 발생하는 오류다.

uname은 리눅스 계열 명령어라 윈도즈에는 없으니

해당 부분은 그냥 빈 문자열("")로 치환하면 실행된다.

 

그리고 task를 실행할 다른 머신이 없는 경우(혹은 그냥 local에서 하고 싶으면) "127.0.0.1"을 넣어주면 된다. 

그런데 단순 ("127.0.0.1")로 넣으면 튜플이 아니라고 오류 발생하니

tuple("127.0.0.1")로 넣어주면 된다.

반응형
Comments