Python Code

멀티프로세싱 (Multi-Processing)

Kimhj 2023. 10. 11. 15:25
  • 기본 사용법
from multiprocessing import Pool

def my_function(arg):
    # 여기에 병렬로 실행하고자 하는 코드 작성
    print(arg)

if __name__ == "__main__":
    # CPU 코어 개수만큼 풀 생성 (일반적으로 CPU 코어 수와 동일하게 설정)
    pool = Pool()

    # 함수를 병렬로 실행
    results = pool.map(my_function, range(5))

    # 풀 종료
    pool.close()
    pool.join()

 

  • 일반 코드(예시)
import multiprocessing, time

# Multi Processing
start_time = time.time()

# define function
def count(name):
    for i in range(1, 100000):
        print(f"{ name }, : { i }")

num_list = ['process 1', 'process 2', 'process 3', 'process 4']

if __name__ == "__main__":
    # For loop
    for num in num_list:
        count(num)

print(f"------ { time.time() - start_time } seconds ------")
  • 결과 : 0.9624049663543701  seconds 소요

 

  • Multi-Processing 적용(예시)
import multiprocessing, time

# Multi Processing
start_time = time.time()

# define function
def count(name):
    for i in range(1, 100000):
        print(f"{ name }, : { i }")

num_list = ['process 1', 'process 2', 'process 3', 'process 4']

if __name__ == "__main__":
    # Multi-threading
    pool = multiprocessing.Pool(processes=2)
    pool.map(count, num_list)
    pool.close()
    pool.join()

print(f"------ { time.time() - start_time } seconds ------")
  • 결과 :  0.925828218460083 seconds 소요

 

 

(코드 출처 : https://niceman.tistory.com/145 )