티스토리 뷰

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 방식이 빠르다

'Programming > Python' 카테고리의 다른 글

파이썬3 user-agent 변경하여 web 파싱하기  (0) 2017.04.07
python terminal color print  (0) 2017.04.04
파이썬3 네이버 환율 정보 파싱  (1) 2017.04.03
댓글