Python 3.x 从asyncio启动线程是否错误?
在Python 3.x 从asyncio启动线程是否错误?,python-3.x,threadpool,python-asyncio,Python 3.x,Threadpool,Python Asyncio,在asyncio中从loop.run_forever()启动线程好吗?这是个好习惯吗 我也在asyncio中使用线程池,我无法单独使用asyncio获得很好的速度,这就是我使用线程池的原因 执行线程池后,即使是循环,内存也会被释放。永远运行()继续永远运行?从asyncio代码启动新线程不是一个bug,而是一个非常无用的操作 您应该控制已经分叉的线程数。这一点很重要,因为保持上千个并行线程的正常运行通常是程序设计出错的标志 通常,您需要在异步IO代码中获取线程中执行的计算结果 在程序终止时关闭所
asyncio
中从loop.run_forever()
启动线程好吗?这是个好习惯吗
我也在asyncio
中使用线程池,我无法单独使用asyncio
获得很好的速度,这就是我使用线程池的原因
执行线程池后,即使是
循环,内存也会被释放。永远运行()
继续永远运行?从asyncio
代码启动新线程不是一个bug,而是一个非常无用的操作
内置的asyncio
循环。使用标准线程池实现公司(concurrent.futures.ThreadPoolExecutor
)运行\u in_executor()
)以非常优雅的方式解决所有问题,请使用它。如果不违反规则,您可以从asyncio启动线程,例如“不要从运行事件循环的线程以外的线程与asyncio交互。”通常,您不需要启动线程,而是使用run\u In\u executor
之类的工具。是的,我在循环内使用concurrent.futures.ThreadPoolExecutor.runforever这是一个好方法吗?如果使用loop.run\u In\u executor()
对于您的自定义executor实例,您是对的。executor方法的显式调用是API误用的标志。但它不能提供很好的速度,但一次50个线程可以提供更高的速度,并且可以通过ThreadPoolExecutor实现。对不起,我不明白。是什么阻止传递您的自定义ThreadPoolExecutor(max_size=50)
进入循环。run_in_executor
作为第一个参数?我使用这个内部循环。runforever()“和concurrent.futures.ProcessPoolExecutor(50)作为执行器:”