python multiprocess

파이썬을 이용해서 멀티프로세스를 돌리는 예제

import multiprocessing as mp # 멀티프로세싱을 하기 위해 모듈을 갖고 온다.
def myfunction(a, b): # 멀티프로세싱에 사용할 함수 예제.
b=a*3
return
master=mp.Manager() # 여기서 멀티프로세싱 마스터 매니저를 정의한다.
processes=[] # 프로세스를 미리 준비시켜 둘 리스트.
startedprocesses=[] # 시작된 프로세스를 넣어둘 리스트.
res=master.dict({}) # 프로세스의 실행 결과를 넣어둘 리스트. 마스터 매니저에 붙어있는 형식으로 선언해야 멀티프로세싱에서 잘 작동한다.
for s in input_data_list: # 프로세스에 넣을 값들의 리스트로 돌리는 for 구문
processes.append(
mp.Process(
target=myfunction, args=(s,res)))
# processes는 프로세스를 미리 준비시켜 둘 평범한 리스트였다. 여기에 프로세스를 준비시켜서 넣어둔다.
# 멀티프로세싱 모듈은 프로세스를 찍어내기 위한 클래스를 갖고 있는데, 그게 바로 Process라는 클래스이다.
# 이 예제와 같이 사용한다면, “myfunction이라는 함수에 s라는 데이터를 집어넣고 res에 그 결과를 되돌리는” 프로세스를 정의한다.
while len(processes):
p=processes.pop() # 미리 준비해둔 프로세스 목록에서 가장 끝에 있는걸 하나 꺼내온다. (사실 꺼내오는 순서는 상관없다.)
p.start() # 프로세스를 시작한다.
startedprocesses.append(p) # 시작된 프로세스를 startedprocesses에 넣어둔다.
while len(startedprocesses):
p=startedprocesses.pop() # startedprocesses에서 프로세스를 하나 꺼내온다.
p.join() # join 메소드는 해당 프로세스가 끝날 때까지 파이썬이 기다리도록 시킨다.

댓글 남기기

이메일은 공개되지 않습니다.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑

%d 블로거가 이것을 좋아합니다: