In this podcast we dive into the age-old producer and consumer problem, talked about the different aspects of it (what does it really solve?), and explain the difference between throughput vs latency.
Having that said, the ThreadPoolExecutor allows you to set the number of threads you want, so it may be more flexible for you to use. Moreover, the que_work interface has changed a lot already in pyuv ...
Asyncio is powerful, but it has a cascading problem: the moment you want to await something, that function has to become async, which means everything calling it has to become async, and so on until ...