언어/Python

파이썬(Python) - multiprocessing(멀티프로세싱) 설명 및 예제(2) - Process

2018. 6. 12. 15:22
목차
  1. Python 관련 포스팅  :  Python 관련
  2. 파이썬(Python) MultiProcessing - 구조
  3. 보통 Multiprocessing 실행 흐름은 아래와 같이 나타낼 수 있으며, 관련 예제는 하단에서 설명합니다.MultiProcessing 처리 구조 - 출처파이썬(Python) MultiProcessing(Process) - 예제 코드


파이썬(Python) Multiprocessing - Process



오늘은 파이썬 멀티프로세싱을 활용하는 두 번째 예제를 설명하겠습니다.

멀티 프로세싱을 활용하면 복잡하고 시간이 걸리는 작업을 별도의 프로세스를 생성 후 병렬처리해서 
보다 빠른 응답처리 속도를 기대할 수 있는 장점이 있습니다.

최근들어 대용량의 빅데이터의 분석 및 예측 등의 머신러닝을 지원하는 다양한 패키지에서 대부분
멀티 프로세싱을 활용해서 멀티코어의 CPU의 장점을 극대화하고 빠른 처리를 지원하고 있습니다.

다만, 충분한 사전 지식 및 병렬 프로그래밍의 이해 없이 코드를 작성한다면, 싱글 프로세스의 응답속도보다 
시간이 지연되고 별도로 예상치 못한 결과가 나타날 수 있으니 프로세스 및 쓰레드 등의 지식이 중요합니다.


또한, 멀티프로세싱은 오버헤드의 증가 및 메모리 사용률이 높아지는 단점도 존재합니다.

그러면 문서 하단에서 간단하게 예제를 작성해보겠습니다.

Python 관련 포스팅  :  Python 관련

파이썬(Python) MultiProcessing - 구조

보통 Multiprocessing 실행 흐름은 아래와 같이 나타낼 수 있으며, 관련 예제는 하단에서 설명합니다.MultiProcessing 처리 구조 - 출처파이썬(Python) MultiProcessing(Process) - 예제 코드


파이썬을 멀티프로세스의 프로세스 객체를 활용해서 10만 단위로 4회 반복(총 40만 카운트) 및 그에 따른 총
수행시간 측정을 하는 예제입니다.

multi_pro3.py

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from multiprocessing import Process
import time
import os
 
#시작시간
start_time = time.time()
 
#멀티쓰레드 사용 (40만 카운트 출력)
def count(cnt):
    proc = os.getpid()
    for i in range(cnt):
        print("Process Id : ", proc ," -- ",i)
 
if __name__ == '__main__':
    #멀티 쓰레딩 Process 사용
    num_arr = [100000, 100000, 100000, 100000]
    procs = []
 
    for index, number in enumerate(num_arr):
        #Process 객체 생성
        proc = Process(target=count, args=(number,))
        procs.append(proc)
        proc.start()
 
    #프로세스 종료 대기
    for proc in procs:
        proc.join()
 
#종료시간
print("--- %s seconds ---" % (time.time() - start_time))
cs

- 6번 라인 : time 패키지를 활용 - 시작시작 변수에 저장
- 7번 라인 : 1 ~ 100000 까지 반복 순회 위한 count 함수 선언
- 16번 라인 : num_arr 크기 만큼 count 함수 실행
- 21번 라인 : Process 객체 생성 및 메소드, 매개변수 바인딩
- 23번 라인 : Process 작업 시작
- 27번 라인 : 리스트에 담은 프로세스 작업 종료 대기 위해  리스트 참조 후 Join 반복 호출
- 30번 라인 : 총 수행 시간 출력

Python multiprocessing 의 추가적인 상세 설명은 이 곳을 참고해 주세요.




파이썬(Python) 
MultiProcessing(Process) - 예제 실행 화면


아래 이미지로 실제 실행 화면을 확인하실 수 있습니다.



실제 실행 화면




마무리


이번 포스팅에서는 파이썬 멀티프로세싱의 Process 을 활용해서 간단한 성능 테스트를 진행했습니다.

Process는 쓰레드와 상당히 유사하며, 일련의 프로세스를 생성 후 작업하므로 시스템의 여러 프로세스의
자원을 충분히 활용할 수 있다는 장점이 있습니다.


쓰레드와 마찬가지로 프로세스의 수, 동기화 관련 지식, 병렬처리 등에 관한 충분한 습득 후 코딩을
시작해야 안정적인 프로그램을 작성하실 수 있습니다.

다음 시간에는 파이썬 멀티 프로세싱(Multi Processing)의 프로세스 상호간의 통신(Communication) 방법
에 관해서 포스팅 하겠습니다.

소스코드 다운로드 :  python_multi(2).zip




저작자표시 동일조건 (새창열림)

'언어 > Python' 카테고리의 다른 글

파이썬(Python) - 람다(lambda)식 및 map 사용 예제 및 소스코드  (0) 2018.10.31
파이썬(Python) - 정규표현식(Regex) 특수문자 제거 설명 및 예제 소스 코드  (3) 2018.07.20
파이썬(Python) - multiprocessing(멀티프로세싱) 설명 및 예제(1) - Pool  (4) 2018.05.31
파이썬(Python) - Thread(쓰레드) 설명 및 예제 소스 코드(4) - 일정 주기 반복 실행  (2) 2018.05.25
파이썬(Python) - Thread(쓰레드) 설명 및 예제 소스 코드(3) - 데이터 통신  (4) 2018.05.12
  1. Python 관련 포스팅  :  Python 관련
  2. 파이썬(Python) MultiProcessing - 구조
  3. 보통 Multiprocessing 실행 흐름은 아래와 같이 나타낼 수 있으며, 관련 예제는 하단에서 설명합니다.MultiProcessing 처리 구조 - 출처파이썬(Python) MultiProcessing(Process) - 예제 코드
'언어/Python' 카테고리의 다른 글
  • 파이썬(Python) - 람다(lambda)식 및 map 사용 예제 및 소스코드
  • 파이썬(Python) - 정규표현식(Regex) 특수문자 제거 설명 및 예제 소스 코드
  • 파이썬(Python) - multiprocessing(멀티프로세싱) 설명 및 예제(1) - Pool
  • 파이썬(Python) - Thread(쓰레드) 설명 및 예제 소스 코드(4) - 일정 주기 반복 실행
[좋은사람]
[좋은사람]
좋은사람의 개발 노트 입니다.
[좋은사람]
좋은사람의 개발 노트
[좋은사람]
전체
오늘
어제
  • 전체보기 (189)
    • 언어 (68)
      • Java (12)
      • Python (39)
      • C# (5)
      • PHP (4)
      • Go (8)
    • OS (18)
      • Linux (7)
      • Windows 10 (5)
      • Etc (6)
    • 빅데이터 & 분석 (8)
      • R (0)
      • Machine Learning (8)
    • 네트워크 (4)
      • Etc (4)
    • 웹 프론트 (25)
      • Javascript & ECMA (8)
      • Vue (13)
      • React (4)
    • 웹 백엔드 (15)
      • Spring (3)
      • Django & Flask (7)
      • Npm & Express (5)
    • 개발도구 (18)
      • Jetbrains (3)
      • Eclipse (5)
      • Git (4)
      • Atom & VScode (6)
    • 데이터베이스 (7)
      • Oracle (2)
      • MariaDB & MySQL (2)
      • Etc (3)
    • 모바일 (6)
      • Android (3)
      • Hybrid (3)
    • 라이프 (20)
      • 여행 & 일상 (6)
      • 취미 (14)

블로그 메뉴

  • 홈으로
  • 블로그소개
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Anaconda
  • ps4
  • 개발자 면접
  • php
  • flask
  • npm
  • SpringSTS
  • centos
  • CFW
  • Eclipse
  • Java
  • python
  • windows10
  • C#
  • 윈도우10
  • Database
  • 아톰 에디터
  • Linux
  • go
  • 2DS
  • OCR
  • 디자인패턴
  • 인텔리j
  • Git
  • Thread
  • Django
  • javascript
  • 커펌
  • 리액트
  • Algorithm
  • 이클립스
  • vue.js
  • 머신러닝
  • nodejs
  • react
  • ubuntu
  • 코딩 면접
  • 3DS
  • 미뮤
  • ATOM

최근 댓글

최근 글

hELLO · Designed By 정상우.
[좋은사람]
파이썬(Python) - multiprocessing(멀티프로세싱) 설명 및 예제(2) - Process
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.