Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 从asyncio启动线程是否错误?_Python 3.x_Threadpool_Python Asyncio - Fatal编程技术网

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,而是一个非常无用的操作

  • 您应该控制已经分叉的线程数。这一点很重要,因为保持上千个并行线程的正常运行通常是程序设计出错的标志
  • 通常,您需要在异步IO代码中获取线程中执行的计算结果
  • 在程序终止时关闭所有活动线程听起来很明智,不是吗

  • 内置的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)作为执行器:”