파이썬 스레드 풀
Fumbani Banda
2023년1월30일
- 스레드 풀 정의
-
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]
작가: Fumbani Banda