SeouliteLab

[Python/파이썬] futures 비동기 작업 본문

카테고리 없음

[Python/파이썬] futures 비동기 작업

Seoulite Lab 2024. 4. 17. 08:30

퓨처스(Futures)는 파이썬에서 비동기 작업을 처리하기 위한 중요한 모듈 중 하나입니다. 이 모듈을 사용하면 비동기 작업을 쉽게 관리하고 조작할 수 있으며, 여러 작업을 동시에 실행하여 성능을 향상시킬 수 있습니다. 이제 몇 가지 예제를 통해 퓨처스 모듈의 활용법을 살펴보겠습니다.

예제 1: 비동기 작업 실행

import concurrent.futures
import time

def task(n):
    print(f"작업 {n} 시작")
    time.sleep(2)
    return f"작업 {n} 완료"

with concurrent.futures.ThreadPoolExecutor() as executor:
    future1 = executor.submit(task, 1)
    future2 = executor.submit(task, 2)

print(future1.result())
print(future2.result())

이 예제에서는 퓨처스를 사용하여 두 개의 작업을 비동기적으로 실행합니다. 각 작업은 2초간 대기 후 완료됩니다.

예제 2: 여러 작업 동시에 실행하기

import concurrent.futures
import time

def task(n):
    time.sleep(n)
    return f"작업 {n} 완료"

with concurrent.futures.ThreadPoolExecutor() as executor:
    futures = [executor.submit(task, i) for i in range(1, 6)]

for future in concurrent.futures.as_completed(futures):
    print(future.result())

이 예제에서는 여러 작업을 동시에 실행하고, 각 작업이 완료되는 대로 결과를 출력합니다.

예제 3: 동시에 실행한 작업 모두 기다리기

import concurrent.futures
import time

def task(n):
    time.sleep(n)
    return f"작업 {n} 완료"

with concurrent.futures.ThreadPoolExecutor() as executor:
    futures = [executor.submit(task, i) for i in range(1, 6)]

results = concurrent.futures.wait(futures)
for future in results.done:
    print(future.result())

이 예제에서는 모든 작업이 완료될 때까지 기다립니다. 그 후 각 작업의 결과를 출력합니다.