2017-09-10 5 views
0

그것은 asyncio가 가지고있는 상태 :asyncio 이벤트 루프에서 concurrent.futures를 사용할 수없는 이유는 무엇입니까? asyncio 문서에서

"이벤트 루프와 함께 사용하기에 적합한 미래 concurrent.futures 모듈의 일을 모방 클래스 만;"

왜 표준 라이브러리에 두 개의 다른 Future 클래스가 있어야합니까 (asyncio 및 동시)? 그리고 왜 이벤트 루프에 적용 할 필요가 있습니까? 나는 무엇을 여기에서 놓치고 있거나, 그들이 그것을 그렇게 그렇게 결정하게 했느냐?

답변

2

표준 라이브러리 (asyncio 및 동시)에 두 가지 Future 클래스가 있어야하는 이유는 무엇입니까?

이러한 클래스는 유사하지만 2 가지 패러다임의 동시 프로그래밍에 사용되며 구현 및 인터페이스가 다릅니다. 예를 들어,

concurrent.futures.Future은 스레드/프로세스 기반 동시 프로그래밍에 사용되며이 경우에는 이벤트 루프가 없으므로 이벤트 루프에 대해 알지 않아야합니다. 그것은 result 메소드는 스레드의/프로세스의 실행 흐름을 시간 초과 또는 미래가 끝날 때까지 차단합니다.

asyncio.Future은 동시 루틴 기반 동시 프로그래밍에 사용되며 이벤트 루프, 동시 루틴 기능 및 기타 관련 자료에 대해 알아야합니다. result 메서드는 실행 흐름을 차단하지 않습니다.이 경우 실행 흐름이 전혀 차단되어서는 안되기 때문입니다. 대신 이벤트 흐름에 의해 실행 흐름을 반환하고 관리 할 수있게 될 때까지 미래를 기다려야합니다.

클래스를 분리하면 클래스를 구현하는 것이 더 쉽고 인터페이스가 명확 해집니다.

+1

자세한 정보 https://stackoverflow.com/questions/43882301/why-is-asyncio-future-incompatible-with-concurrent-futures-future and https://stackoverflow.com/questions/29902908/what-is 동시 - 미래 -과 - 비 동시성 선물의 차이 – kwarunek

관련 문제