从 asyncio 启动线程是否错误?

Does starting threads from asyncio is wrong?

asyncio中从loop.run_forever()开始线程好吗?这是一个好习惯吗?

我还在 asyncio 中使用了线程池,我无法单独使用 asyncio 获得良好的速度,这就是我使用线程池的原因。

即使 loop.run_forever() 一直持续到 运行,线程池执行后内存是否会空闲?

asyncio 代码开始一个新线程不是错误,而是非常无用的操作。

  1. 您应该控制已经分叉的线程数。这很重要,因为保持一千个并行线程运行通常是程序设计有问题的标志。
  2. 您经常需要在异步代码中返回在线程中执行的计算结果。
  3. 在程序终止时关闭所有活动线程听起来很明智,不是吗?

Built-in asyncio loop.run_in_executor() 与标准线程池实现公司 (concurrent.futures.ThreadPoolExecutor) 以非常优雅的方式解决了所有问题,请使用它。