파이썬 스레드 풀

  1. 스레드 풀 정의
  2. multiprocessing.pool.ThreadPoolmultiprocessing.Pool의 차이점
  3. Python의 multiprocessing.Pool
  4. Python의 multiprocessing.pool.Threadpool
파이썬 스레드 풀

이 튜토리얼은 multiprocessingPoolmultiprocessing.poolThreadPool의 차이점을 보여줍니다.

스레드 풀 정의

스레드 풀은 작업을 제공할 준비가 되어 있는 미리 인스턴스화된 유휴 스레드 그룹입니다. 비동기적으로 실행할 각 작업에 대해 새 스레드 개체를 만드는 것은 비용이 많이 듭니다. 스레드 풀을 사용하면 작업을 작업 대기열에 추가하고 스레드 풀은 작업에 사용 가능한 스레드를 할당합니다. 스레드 풀은 필요한 것보다 더 많은 스레드를 생성하거나 파괴하는 것을 방지하는 데 도움이 됩니다.

multiprocessing.pool.ThreadPoolmultiprocessing.Pool의 차이점

multiprocessing.pool.ThreadPoolmultiprocessing.Pool과 같은 방식으로 작동합니다. 차이점은 multiprocessing.pool.Threadpool은 스레드를 사용하여 작업자의 논리를 실행하는 반면 multiprocessing.Pool은 작업자 프로세스를 사용한다는 것입니다.

Python의 multiprocessing.Pool

아래 코드는 sleepy() 함수를 각각 실행할 4개의 다른 프로세스를 생성합니다.

Python
 pythonCopy# 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)

출력:

 textCopyProcess Id 239
Process Id 240
Process Id 241
Process Id 242
[0, 1, 2, 3]

Python의 multiprocessing.pool.Threadpool

ThreadPool은 작업자 프로세스 대신 sleepy() 함수를 실행하는 4개의 스레드를 생성합니다.

Python
 pythonCopy# 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)

출력:

 textCopyProcess Id 217
Process Id 217
Process Id 217
Process Id 217
[0, 1, 2, 3]
튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Fumbani Banda avatar Fumbani Banda avatar

Fumbani is a tech enthusiast. He enjoys writing on Linux and Python as well as contributing to open-source projects.

LinkedIn GitHub

관련 문장 - Python Threading