파이썬 스레드 풀
Fumbani Banda
2023년1월30일
Python
Python Threading
- 스레드 풀 정의
-
multiprocessing.pool.ThreadPool과multiprocessing.Pool의 차이점 -
Python의
multiprocessing.Pool -
Python의
multiprocessing.pool.Threadpool
이 튜토리얼은 multiprocessing의 Pool과 multiprocessing.pool의 ThreadPool의 차이점을 보여줍니다.
스레드 풀 정의
스레드 풀은 작업을 제공할 준비가 되어 있는 미리 인스턴스화된 유휴 스레드 그룹입니다. 비동기적으로 실행할 각 작업에 대해 새 스레드 개체를 만드는 것은 비용이 많이 듭니다. 스레드 풀을 사용하면 작업을 작업 대기열에 추가하고 스레드 풀은 작업에 사용 가능한 스레드를 할당합니다. 스레드 풀은 필요한 것보다 더 많은 스레드를 생성하거나 파괴하는 것을 방지하는 데 도움이 됩니다.
multiprocessing.pool.ThreadPool과 multiprocessing.Pool의 차이점
multiprocessing.pool.ThreadPool은 multiprocessing.Pool과 같은 방식으로 작동합니다. 차이점은 multiprocessing.pool.Threadpool은 스레드를 사용하여 작업자의 논리를 실행하는 반면 multiprocessing.Pool은 작업자 프로세스를 사용한다는 것입니다.
Python의 multiprocessing.Pool
아래 코드는 sleepy() 함수를 각각 실행할 4개의 다른 프로세스를 생성합니다.
# python 3.x
from multiprocessing import Pool
import os
import time
def sleepy(x):
print("Process Id", os.getpid())
time.sleep(x)
return x
if __name__ == "__main__":
p = Pool(5)
pool_output = p.map(sleepy, range(4))
print(pool_output)
출력:
Process Id 239
Process Id 240
Process Id 241
Process Id 242
[0, 1, 2, 3]
Python의 multiprocessing.pool.Threadpool
ThreadPool은 작업자 프로세스 대신 sleepy() 함수를 실행하는 4개의 스레드를 생성합니다.
# python 3.x
from multiprocessing.pool import ThreadPool
import os
import time
def sleepy(x):
print("Process Id", os.getpid())
time.sleep(x)
return x
if __name__ == "__main__":
p = ThreadPool(5)
pool_output = p.map(sleepy, range(4))
print(pool_output)
출력:
Process Id 217
Process Id 217
Process Id 217
Process Id 217
[0, 1, 2, 3]
튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
작가: Fumbani Banda
