두 클래스는 동시 프로그래밍의 뛰어난 추상화를 나타내므로 동일한 API를 지원하지 않는다는 것이 당황 스럽습니다. docs에 따라 구체적asyncio.Future가 concurrent.futures.Future와 호환되지 않는 이유는 무엇입니까?
:
asyncio.Future
concurrent.futures.Future
은 거의 호환된다.차이 :
result()
및exception()
시간 초과 인수를 미래가 아직 완료되지 않은 경우 예외를 발생하지 않습니다.add_done_callback()
으로 등록 된 콜백은 항상 이벤트 루프의call_soon_threadsafe()
을 통해 호출됩니다.- 이 클래스는
concurrent.futures
패키지의wait()
및as_completed()
함수와 호환되지 않습니다.
위의 목록은 몇 가지 더 차이가있다, 실제로 불완전 : 너무 일찍 전화하면
running()
방법은InvalidStateError
을 제기 할 수result()
및exception()
결석
이러한 작업은 이벤트 루프가 본질적으로 유용하기 때문에 이러한 작업이 쓸모 없거나 구현하기에 너무 번거롭습니까?
그리고 add_done_callback()
과 관련된 차이점의 의미는 무엇입니까? 어느 쪽이든, 콜백은 미래가 끝난 후에 불특정 시간에 일어날 것을 보장합니다. 그래서 두 클래스간에 완벽하게 일치하지 않습니까?