Есть ли области где многопоточность лучше, чем асинхронность в python?
В python есть 3 способа выполнять код одновременно:
- многопроцессорность
- многопоточность
- асинхронность
Если с многопроцессорностью всё понятно - она позволяет реально распараллелить задачу, то насчет многопоточности и асинхронности возникают вопросы. По факту из-за GIL все потоки на самом деле работают в одном потоке (прямо как корутины!!). Они могут дать выигрышь в производительности только если в коде есть много неблокирующих операций (прямо как корутины!!!!). Исходя из этого факта, возникает резонный вопрос: "Зачем вообще использовать потоки, если есть asyncio с корутинами?". О реализациях python без GIL слышал, но интересует стандартный python 3 (И о будущей реализации python без GIL тоже слышал).