• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

as_completed와 future 관련하여 질문했던 내용입니다

21.10.20 22:12 작성 조회수 88

0

as_completed() 함수와 future에 대해서 질문을 드렸고 감사하게도 도움을 많이 주셔서 모르는 부분을 거의 다 해결할 수 있었습니다.

"The as_completed() function takes an iterable of Future objects and starts yielding values as soon as the futures start resolving."

이라는 설명과 관련된 내용들과, as_completed() 함수의 코드 예제들을 찾아보았는데요

from concurrent.futures import ThreadPoolExecutor, as_completed
from time import sleep
from random import randint

def return_after_5_secs(num):
    sleep(randint(1, 5))
    return 'Return of {}'.format(num)

pool2 = ThreadPoolExecutor(5)

futures2 = []

for x in range(5):
    futures2.append(pool2.submit(return_after_5_secs, x))

for x in as_completed(futures2):
    print(x.result())

공통적으로 .submit() 함수를 통해 future 객체를 생성하고, 이를 리스트 안에 넣으면서 리스트 형태로 변환(?)하는 것을 확인할 수 있었습니다.

그 후 iterator를 리턴하는 as_completed() 함수의 특성을 이용하여 for 구문에서 반복하는 것을 볼 수 있었는데요

그렇다면

"The as_completed() function takes an iterable of Future objects"

에서 말하는 내용은 결국 as_completed() 함수가 'submit 함수 등을 이용해 future 객체를 만들고, 이를 iterable한 객체의 형태로 변환을 하여 인자로 사용한다'는 의미로 이해하면 되는 것인가요??

항상 많은 도움 주셔서 감사합니다!!

답변 1

답변을 작성해보세요.

0

네 맞습니다.