본문 바로가기
Python/Python

Python) 멀티프로세싱 모듈 사용법 (Process, Pool)

by 유노파이 2022. 1. 24.

 

import multiprocessing

# --- --- multiprocessing.Process 사용

def do_multi(code):
	# main에서 지정한 code_list의 1,2 각각 들어와서
    # 두 개의 프로세스가 실행
    # 여기 do_multi  함수에 멀티프로세싱으로 실행할 코드를 작성하면됨.
    print (code)
    
#------------------------------------------------------------          
def main():

    processes = []
    
    code_list = [1,2]
    for code in code_list:
        # 실행함수, 파라미터(복수개 가능)
        p = multiprocessing.Process(target = do_multi, args = [code,])
        p.start() # process 시작
        
        processes.append(p)
    
    for process in processes:
        process.join() # process 작업 끝날 때까지 기다리기

    # multi end
    
    print ("single process")
    for a in range(10):
        print (a)
        
if __name__ == '__main__':
  
    main()
# --- --- multiprocessing.Pool 사용

def do_multi(code):
    print (code)
    
#------------------------------------------------------------          
def main():    

    code_list = [1,2]

    print ('--- start _multiprocessing')

    # cpu 갯수 확인
    cpu_count = multiprocessing.cpu_count()
    print ('--- cpu_count ', cpu_count)

    # cpu 수 결정
    pool = multiprocessing.Pool(2)

    # 실행 함수, 넘겨줄 파라미터
    pool.map(do_multi, code_list)

    # 모든 프로세스 종료까지 기다림
    pool.close()
    pool.join()
    # multi end

    print ("--- single process")
    for a in range(10):
        print (a)
            
if __name__ == '__main__':
    
    main()

댓글