일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- PostgreSQL
- CUDA
- Database
- Windows
- docker
- Paper
- KAKAO
- file
- AI
- git
- Package
- format
- Laravel
- Python
- evaluation
- LLM
- Mac
- Linux
- judge
- numpy
- GitLab
- Flask
- Converting
- DB
- TORCH
- list
- pytorch
- pandas
- enV
- Container
Archives
- Today
- Total
Daily Develope
[Python] Multi processing 멀티 프로세싱 본문
샘플코드 - Multiprocessing Pool
: 현재 환경의 전체 프로세스를 사용해 0~499 까지의 제곱을 (병렬)계산
import multiprocessing
def mul(x):
return x*x
if __name__ == '__main__':
availableProcess = multiprocessing.cpu_count() # CPU 전체개수 조회
processPool = multiprocessing.Pool(availableProcess) # 사용할 CPU 개수 설정, 논리(logical) CPU당 하나의 worker process를 가진다
processPool.map(mul, range(500)) # 0~499 까지 숫자를 인자값으로 mul 함수 호출을 각 코어마다 수행
샘플코드 - ProcessPoolExecutor
: 현재 환경의 전체 프로세스를 사용해 0~499 까지의 제곱을 (병렬)계산
import multiprocessing
from concurrent.futures import ProcessPoolExecutor
def mul(x):
return x*x
if __name__ == '__main__':
availableProcess = multiprocessing.cpu_count() # CPU 전체개수 조회
processPool = ProcessPoolExecutor(availableProcess) # 사용할 CPU 개수 설정, 논리(logical) CPU당 하나의 worker
processPool.map(mul, range(500))
샘플코드 - Process
: 동일한 함수를 반복호출 하려는 경우 사용 (앞의 예시들은 동일한 함수를 여러 프로세스가 나누어 처리했다면, 아래 방법은 각 함수마다 별도 프로세서를 가지고 동작한다.)
from multiprocessing import Process
def mul(x):
return x*x
if __name__ == "__main__":
mul_list = range(5)
procs = [Process(target=mul, args=(mul_item,)) for mul_item in mul_list]
# Start procs
for proc in procs:
proc.start()
# Join procs
for idx, proc in enumerate(procs):
proc.join()
print(f"--- proc_{idx} done. ---")
Multiprocessing Pool vs ProcessPoolExecutor 차이
- 공통점 : Multi Processing 지원 (child worker processes 생성 및 사용), 비동기 처리 지원
- 차이점 : Task의 선택/시작/대기와 같은 작업 수행 가능여부 (ProcessPoolExecutor에서는 Task 상태에 따른 처리가 Multiprocessing Pool에 비해서 보다 자유로움)
'Develope > Python' 카테고리의 다른 글
[Python] 알면 도움되는 자주쓰는 문법 (tips) (0) | 2023.04.10 |
---|---|
[Python] 문법 (grammer) 예제로 간단 정리 (0) | 2023.04.10 |
[Python] 시간 변환 (datetime) (0) | 2022.12.05 |
[Python] Json 읽기 / 쓰기 (0) | 2022.11.15 |
[Python] 단위테스트 (Unit test) (0) | 2022.10.25 |
Comments