inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

우리를 위한 프로그래밍 : 파이썬 중급 (Inflearn Original)

병렬성 2 - Futures(5-2)

wait의 done(), not_done() 그리고 as_completed의 cancelled 질문입니다!

278

밑바닥개발자

작성한 질문수 77

0

안녕하세요! 우선 새해 복 많이 받으세요! 다름이 아니라 as_completed의 cancelled 메소드에 대해서 몇 가지 궁금한게 있습니다! 

1. wait 같은 경우에는 설정한 timeout을 초과하는 작업에 대해서는 not_done()으로 출력해줄 수 있고 취소된 작업이 뭔지 확인할 수 있습니다!

그렇다면 as_completed는 애초에 구현되는 과정이 WORK_LST의 work들을 submit해서 append해준 futures_lst 리스트안에 담긴 작업들을 다시 for문으로 돌려서 작업들 중 시간이 적게 걸리는 작업들을 자동적으로 파악해서 알아서 시간이 적게 걸리는 작업들 순으로 동시성을 수행해주는 건가요? 

2. 1번에서 설명드렸던과 같이 어쨋든 as_completed는 작업이 적게 걸리는 순으로 작업을 해준다고 한 것이고 결과적으로 작업이 엄청나게 많은 시간이 걸려도 어쨋든 '모든 작업을 완료' 한다는 점에서 wait와는 다르다고 판단됩니다(wait는 timeout 설정을 해주니깐요!) 그렇다면 as_completed에서 cancelled 메소드는 어떤 이유로 존재하는 건가요? cancelled 메소드가 취소된 작업이 무엇인지 알려주기 위한 것인데, 시간이 아무리 오래 걸리는 작업도 '수행 완료' 상태는 되기 마련인데, 그렇다면 모든 작업들에 대해 cancelled는 False일 거고... cancelled 메소드의 존재 이유가 궁금합니다!

3. 마지막으로 wait의 done(), not_done()에 대한 질문인데요! 다음과 같이 done()된 작업들, not_done()된 작업들 결과물로 이렇게 표시가 되는데, <Future at ~~~ > 이런식으로 나오는 표기를 보고 수행된 또는 중지된 작업들이 구체적으로 '내가 만든 어떤 작업'인지 어떻게 알 수 있나요..? 메모리 id(0x7fa~~같은 값들)를 보고 알아차려야 하나요?

python django

답변 2

0

밑바닥개발자

아하 as_completed 메소드에서도 timeout 파라미터가 있었군요! 밖이신 데도 답변 감사드립니다!

0

좋은사람

네! 복많이 받으세요 영훈님!

밖이 짧게 답변드리겠습니다.

1. 맞습니다.

2. 항상 작업이 완료된다는 보장이 없습니다. 예를들어 서버측 요청에 무기한으로 대기가 걸릴수도 있고

    기타 다른 변수들이 많기 때문에 canceld 메소드가 존재합니다.

concurrent.futures.as_completed(fstimeout=None)

Returns an iterator over the Future instances (possibly created by different Executor instances) given by fs that yields futures as they complete (finished or cancelled futures). Any futures given by fs that are duplicated will be returned once. Any futures that completed before as_completed() is called will be yielded first. The returned iterator raises a concurrent.futures.TimeoutError if __next__() is called and the result isn’t available after timeout seconds from the original call to as_completed()timeout can be an int or float. If timeout is not specified or None, there is no limit to the wait time.

진도미확인 (진도가 안 넘어감)

0

40

1

RuntimeError: There is no current event loop in thread 'MainThread'

0

84

1

chapter 07-01 실행 오류

0

66

1

Chapter05-04 : sum_func의 합이 이중 출력됩니다.

0

77

2

45. 병렬성 2 - Futures(5-1) wait가 의도된 대로 동작하지 않습니다.

0

92

2

멀티스레딩 - 44. 병렬성 1 - Futures(4-2)

0

70

2

chapter05_02 클로저 질문사항 !

0

51

1

LV1 설정

0

87

2

매직 메소드의 호출 방법 차이 문의

0

131

2

왜 numbers리스트를 만들때 str으로 숫자를 감싸나요?

0

95

2

스크랩핑 실습 중 Mac OS 인증서 문제

0

129

1

AsyncIO 멀티 스크랩핑 실습 예제 관련 질문

0

167

1

강의자료가 영상과 다릅니다

0

255

2

closure.cell_contents 초기화 하기 문의

0

129

2

map함수 사용 시, list변환 방법 문의

0

335

2

__mul__ 백터 * 숫지, 백터 * 백터 처리

0

143

1

del처리후 질문입니다.

0

153

1

car_list(car1,car2,car3) 인스턴스 tuple 타입 문의

0

223

1

coroutine에 대한 질문

0

242

1

제너레이터 이터레이터 질문이 있습니다.

0

249

1

atom install package search not working

0

276

1

Magic Method - Not Implemented

0

395

1

가상환경 질문!

0

402

1

병렬처리 추가 질문이 있습니다.

0

244

1