python queue를 이용한 multiprocessing 기초
python queue를 이용한 multiprocessing 기초 뼈대
import multiprocessing
#동작 실행 함수
def do_work(item):
print item
#Queue 전달 함수
def worker(q):
for item in iter(q.get, None):
do_work(item)
q.task_done()
q.task_done()
#메인 함수
def main():
#동작 프로세스 개수
num_procs = 5
#큐 데이터
items = [1,2,3,4,5,6,7,8,9,10]
q = multiprocessing.JoinableQueue()
procs = []
for i in range(num_procs):
procs.append(multiprocessing.Process(target=worker, args=(q,) ))
procs[-1].daemon = True
procs[-1].start()
for item in items:
q.put(item)
q.join()
for p in procs:
q.put(None)
q.join()
for p in procs:
p.join()
q.__init__()
print "Finished everything...."
print "num active children:", multiprocessing.active_children()
if __name__ == '__main__':
main()
Queue 데이터와 do_work의 동작 함수를 적절하게 수정하면 여러 방면으로 활용 가능
multi thread 방식보다 multi process 방식이 빠르다