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 메소드는 해당 프로세스가 끝날 때까지 파이썬이 기다리도록 시킨다.

코멘트

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.