Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 설치
- easyocr 기존 모델 학습
- conda
- python 멀티프로세싱
- multiprocessing
- EasyOCR
- python
- 파이썬 멀티프로세싱
- python easyocr 학습
- easyocr 기존 모델
- Anaconda
- react
- 기초
- 자료형
- 명령어
- 자바스크립트
- 파이썬 pool
- 기존 모델 학습
- python 학습
- Java
- 함수
- python multiprocessing
- javascript
- 파이썬
- 가상 환경
- python pool
- python 기초
- 리액트
- 파이썬 학습 테스트
- 파이썬 기초
Archives
- Today
- Total
귀찮아서가끔하는블로그
[python] multiprocessing (Pool) 본문
반응형
파이썬 멀티프로세싱
파이썬 멀티프로세싱
multiprocessing 은 threading 모듈과 유사한 API를 사용하여 프로세스 스포닝(spawning)을 지원하는 패키지입니다. multiprocessing 패키지는 지역과 원격 동시성을 모두 제공하며 스레드 대신 서브 프로세스를 사용하여 전역 인터프리터 록 을 효과적으로 피합니다. 이것 때문에, multiprocessing 모듈은 프로그래머가 주어진 기계에서 다중 프로세서를 최대한 활용할 수 있게 합니다. 유닉스와 윈도우에서 모두 실행됩니다.
출처 : https://docs.python.org/ko/3/library/multiprocessing.html
간단한 예제를 통해 multiprocessing의 장점을 살펴보자
1. multiprocessing을 사용하지 않은 경우
import multiprocessing
import time
from datetime import datetime
def sleepTest(name):
#시작시간
start_time = time.time()
print("=====================================================")
print(name + ": sleep IN")
time.sleep(10)
print("sleepTest elapsed: ", time.time() - start_time) # seconds
print("=====================================================")
return "success"
process_list = ['p1', 'p2', 'p3', 'p4']
if __name__ == '__main__':
print("=====================================================")
for process in process_list:
sleepTest(process)
#총 소요 시간
print("=====================================================")
print("elapsed time : ",time.time() - start_time)
print("=====================================================")
결과
2. multiprocessing을 사용한 경우
def sleepTest(name):
#시작시간
start_time = time.time()
print("=====================================================")
print(name + ": sleep IN")
time.sleep(10)
print("sleepTest elapsed: ", time.time() - start_time) # seconds
print("=====================================================")
return "success"
process_list = ['p1', 'p2', 'p3', 'p4']
if __name__ == '__main__':
#멀티 쓰레딩 Pool 사용
pool = multiprocessing.Pool(processes=2) # 현재 시스템에서 사용 할 프로세스 개수
pool.map(sleepTest, process_list)
pool.close()
pool.join()
print("=====================================================")
print("elapsed time : ",time.time() - start_time)
print("=====================================================")
결과
위와 같이 2개의 프로세스를 사용하여 소요시간을 절반으로 줄이는 효과를 볼 수 있다.
반응형
'Python' 카테고리의 다른 글
[Python] easyocr 사용자 모델 학습하기 - 학습데이터 변환 (0) | 2022.07.13 |
---|---|
[Python] easyocr 사용자 모델 학습하기 - 학습데이터 생성 (0) | 2022.07.12 |
[python] flask api 호출 테스트 (0) | 2022.07.06 |
[python] flask를 이용한 python api 만들기 (0) | 2022.07.04 |
[python] flask 사용해보기 (0) | 2022.06.30 |
Comments