10 months ago
- asyncio在Python 3.4中引入,并在Python 3.5中成为非临时性功能,增加了async/await关键字。
- asyncio存在重大设计缺陷,包括中断机制失效、任务销毁问题以及有问题的I/O处理。
- asyncio的中断机制是边沿触发式的,可能导致死锁和中断被忽略,与Trio的水平触发方式不同。
- asyncio不会对任务保持强引用,导致任务可能在执行过程中被垃圾回收,引发诸如'任务被销毁但仍在挂起中!'的警告。
- asyncio的I/O处理基于回调且非线性,与Trio直观的套接字API相比更难使用。
- asyncio.Queue缺乏适当的背压机制,如果不谨慎管理可能导致内存泄漏或死锁。
- Trio和AnyIO提供了更好的替代方案,具有结构化并发、水平触发中断和更直观的API。
- 其他小问题包括线程集成不佳、信号处理以及asyncio中的任务组中断问题。