본문 바로가기
RL with python/Python example code

[Python] Multi processing

by achrxme 2023. 9. 1.
# Multi processing

import multiprocessing as mp
import numpy as np


def square(x):
    return np.square(x)


x_ = np.arange(72)
# print(x_)

cpu_n = mp.cpu_count()
print(cpu_n)

pool = mp.Pool(cpu_n)  # CPU 개수와 같은 다중 프로세싱 풀을 만듬
squared = pool.map(square, [x_[3*i:3*i+3] for i in range(cpu_n)]) #Pool의 map method를 활용해 square 함수를 각 배열에 적용 -> 취
print(squared)

 

import multiprocessing as mp
import numpy as np


def square(i, x, queue):
    print("In process {}".format(i, ))
    queue.put(np.square(x))


processes = []      # 각 Processor 들의 reference 를 담을 목록
queue = mp.Queue()  # Processor 들 간의 데이터 공유를 위한 대기열
x = np.arange(64)
for i in range(8):  # 8개의 Processor에서 각각 square 함수 실행
    start_index = 8 * i
    proc = mp.Process(target=square, args=(i, x[start_index:start_index + 8], queue))
    proc.start()
    processes.append(proc)

for proc in processes:  # 모든 Process가 완료되길 기다림
    proc.join()

for proc in processes:  # 모든 Process를 종료
    proc.terminate()
results = []
while not queue.empty():  # 최종 결과 목록
    results.append(queue.get())

print(results)