Programming/Python

[Python] 멀티 프로세싱 - 병렬 프로그래밍(다중 프로세서 사용)

Talking1258 2019. 9. 22. 02:10

안녕하세요. 이번에는 멀티 프로세싱에 대해 쓰려합니다.

이 멀티 프로세싱을 대부분 처리 효율성을 높이기 위해서 사용합니다.

 

일반적으로 코드를 돌리게 되면 프로세서를 하나만 쓰게됩니다.

이렇게 되면 8개의 프로세서가 있는데 1개만 쓰다보니까 CPU사용량은 최대 12.5%가 되죠.

 

물론 파이썬을 여러개 켜두면 되긴합니다. 또, 멀티 프로세싱을 다르게 쓰시는 분들도 많은데 저는 병렬 프로그래밍만 주로 다뤄봐서 모르겠습니다.

저는 이 코드를 통해 암호해독을 주로 했었습니다. 하나만 돌리는 것보다는 모든 CPU를 동반하게 해 줘서 4배 빠르게 진행 되었습니다.

 

아래 멀티 프로세싱 코드는 미리 코드를 삽입해 둔 다음, 실행시키면 삽입되어 있는 코드를 복제하여 새 파이썬 프로세스에 코드를 실행 시킵니다.

각 프로세스 마다 "100000 ** 100000" 코드를 실행 시킵니다.

import multiprocessing
import threading

def proc():
    100000 ** 100000

def main():
    work = multiprocessing.Process(target=proc, args=())
    work.start()
    work.join()

for i in range(4):
    threading.Thread(target=main, args=()).start()

프로세스가 8개 있다면 for문에 있는 range 값을 8로 해두면 효율적입니다.

필자는 4개이므로 4로 설정해 두었습니다.

 

참고: 이 코드는 프로세스 끼리 상호작용이 되질 않습니다.