Python에서 멀티프로세싱을 구현한 예제입니다.
상세한 설명보다는 아래에 실행해볼 수 있는 예제 코드와 참고자료 링크 남기겠습니다.
.py 파일로 저장 후 실행해보실 수 있습니다.
import concurrent.futures
import math
import time
PRIMES = [
112272535095293,
112582705942171,
112272535095293,
115280095190773,
115797848077099,
112272535095293,
112582705942171,
112272535095293
# 115280095190773,
# 115797848077099,
]
def is_prime(n):
if n < 2:
return False
if n == 2:
return True
if n % 2 == 0:
return False
sqrt_n = int(math.floor(math.sqrt(n)))
for i in range(3, sqrt_n + 1, 2):
if n % i == 0:
return False
return True
def case_single_process():
strt_time = time.time()
for x in PRIMES:
print("%d is prime: %s" % (x, is_prime(x)))
print("# Single Process / Time differnce:", round(time.time() - strt_time, 2), 'Seconds')
def case_multi_thread():
strt_time = time.time()
executor = concurrent.futures.ThreadPoolExecutor(max_workers=4)
for number, x in zip(PRIMES, executor.map(is_prime, PRIMES)):
print("%d is prime: %s" % (number, x))
print("# Multi Thread / Time differnce : ", round(time.time() - strt_time, 2), 'Seconds')
def case_multi_process():
strt_time = time.time()
executor = concurrent.futures.ProcessPoolExecutor(max_workers=4)
for number, x in zip(PRIMES, executor.map(is_prime, PRIMES)):
print("%d is prime: %s" % (number, x))
return print("# Multi Process / Time differnce : ", round(time.time() - strt_time, 2), 'Seconds')
if __name__ == '__main__':
case_single_process()
case_multi_thread()
case_multi_process()
# 참고자료
# 불곰님 블로그, [Python 진정한 병렬성을 ...] https://brownbears.tistory.com/238
# 하나씩 점을 찍어 나가며님 블로그, [Python 멀티 프로세싱은 parmap으로하자], https://dailyheumsi.tistory.com/105
# Python 공식문서, [concurrent.futures] , https://docs.python.org/3/library/concurrent.futures.html
기타 궁금하신 사항은 댓글 남겨주세요.
감사합니다.
1. 불곰님 블로그, [Python 진정한 병렬성을 ...] https://brownbears.tistory.com/238
2. 하나씩 점을 찍어 나가며님 블로그, [Python 멀티 프로세싱은 parmap으로하자], https://dailyheumsi.tistory.com/105
3. Python 공식문서, [concurrent.futures] , https://docs.python.org/3/library/concurrent.futures.html
[Python] PEP 8 -- 파이썬 코드 스타일 가이드 (이항 연산자 +-/*) (0) | 2021.10.09 |
---|---|
[Python] list의 append, extend 메서드, 리스트에 다른 리스트의 원소를 그대로 붙이고 싶다면 extend 사용 (0) | 2021.08.10 |
[Python] Python Exception 리스트 (0) | 2021.05.01 |
[Airflow] ModuleNotFoundError: No module named 'sqlalchemy.ext.declarative.clsregistry' (0) | 2021.04.20 |
[Python] Python으로 파일생성 시간 및 용량 출력하기 (0) | 2021.04.19 |