티스토리 뷰
안녕하세요. 이번에는 멀티 프로세싱에 대해 쓰려합니다.
이 멀티 프로세싱을 대부분 처리 효율성을 높이기 위해서 사용합니다.
일반적으로 코드를 돌리게 되면 프로세서를 하나만 쓰게됩니다.
이렇게 되면 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로 설정해 두었습니다.
참고: 이 코드는 프로세스 끼리 상호작용이 되질 않습니다.
'Programming > Python' 카테고리의 다른 글
[Python 2.7] 파이썬 웹 서버 오픈소스 소프트웨어 (1.1.0 / 20191022) (0) | 2019.10.22 |
---|---|
[Python 2.7] 파이썬 웹 서버 오픈소스 소프트웨어 (1.0 / 20191019) (0) | 2019.10.19 |
[Python3] 자리 바꾸기 프로그램 (0) | 2019.10.08 |
[Python 2.7] 웹사이트 소스코드 가져오기 #파싱 #크롤링 (0) | 2019.09.18 |
[Python] 픽셀값 차를 통한 이미지 유사도 (1) | 2019.09.15 |