Python concurrent.future의 이해 및 응용

Eunbin Park·2026년 9월 5일
import requests
import threading
import concurrent.futures
import time
from utils import RandomNumberAPI

api = RandomNumberAPI()
def thread_function():
    tokens = api.request()
    return tokens


if __name__ == "__main__":
    results = []
    start = time.time()
    with concurrent.futures.ThreadPoolExecutor() as executor:
        futures = {executor.submit(thread_function) for _ in range(1000)}
        for future in concurrent.futures.as_completed(futures):
            result = future.result()
            results.append(result)
            if len(results) % 60 == 0:
                time_to_wait = max(0, start + 1 - time.time())
                time.sleep(time_to_wait)
                start = time.time()

    print(results)  # 이제 results에는 각 스레드의 반환값이 저장되어 있습니다.

0개의 댓글