파이썬 스레드 풀

Fumbani Banda 2023년1월30일
  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 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 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