首页 > 其他分享 >[async]子线程内开启协程 RuntimeError: There is no current event loop in thread 'Thread-2'

[async]子线程内开启协程 RuntimeError: There is no current event loop in thread 'Thread-2'

时间:2023-08-03 18:01:46浏览次数:38  
标签:协程 Thread thread RuntimeError 线程 event loop asyncio

在子线程内直接获取事件循环会报错:RuntimeError: There is no current event loop in thread 'Thread-2',此时的代码为:

loop = asyncio.get_event_loop()
loop.run_until_complete(协程函数)  # 执行

解决方法:

在子线程内创建并配置事件循环

new_loop = asyncio.new_event_loop()  # 子线程下新建时间循环
asyncio.set_event_loop(new_loop)  # 配置新建的事件循环
loop = asyncio.get_event_loop()
loop.run_until_complete(协程函数)  # 执行
 

标签:协程,Thread,thread,RuntimeError,线程,event,loop,asyncio
From: https://www.cnblogs.com/CJTARRR/p/17604060.html

相关文章

  • 进程,线程和协程;为什么有了GIL锁还要互斥锁;多态和多态性;鸭子类型
    进程,线程和协程;为什么有了GIL锁还要互斥锁;多态和多态性;鸭子类型为什么有了GIL锁还要互斥锁1.GIL本身就是一个大的互斥锁2.同一个进程下资源是共享的,也就是说多条线程可以操作同一个变量3.多个线程可以操作同一个变量就会出现数据安全问题4.临界区:指一段代码或一段程序片段,需......
  • pyppeteer异常:ValueError: signal only works in main thread
    当在子线程中调用pyppeteer工具的时候,会报错:ValueError:signalonlyworksinmainthread。解决方案:在创建浏览器对象时,加上以下三个字段: ......
  • ThreadPoolTaskExecutor有什么特性?
    ThreadPoolTaskExecutor是SpringFramework中用来管理线程池的一个组件,基于Java的java.util.concurrent.ThreadPoolExecutor。以下是ThreadPoolTaskExecutor的一些重要特性:线程池大小配置:可以轻松设置线程池的核心和最大线程数,允许动态调整池大小。队列容量配置:任务可以......
  • 为什么有了gil锁还要互斥锁、 进程,线程和协程 、什么是鸭子类型
    目录1为什么有了gil锁还要互斥锁互斥锁保证数据安全2进程,线程和协程在哪用过3什么是鸭子类型1为什么有了gil锁还要互斥锁gil:全局解释器锁,线程要执行,必须先获得到gil锁,才能执行互斥锁:为了保证多线程并发操作数据(变量)而设置的锁,保证在加锁和释放锁之间,其他线程不能操作gi......
  • ThreadLocal实践案例两则
    ThreadLocal是Java中的一个类,全路径:java.lang.ThreadLocal,用于在多线程环境下存储线程本地变量。在多线程应用程序中,不同线程之间共享数据可能会引发线程安全问题。ThreadLocal通过为每个线程创建独立的变量副本,保证了线程间数据的隔离性,从而有效地解决了这一问题。线程之间的数据......
  • 彻底搞懂Java中的Runnable和Thread
    写在前面今天在阅读ThreadPoolExecutor源码的时候觉得有些地方理解起来似是而非,很别扭!最后才猛然发现,原来是我自己的问题:没有真正理解Runnable和Thread的含义!我之前对于Runnable和Thread理解的误区在于:“Runnble和Thread是实现多线程的两种方式,在Java中要实现多线程运行要么实现......
  • 一文让你彻底掌握ThreadLocal
    本文分享自华为云社区《【高并发】一文带你彻底搞懂ThreadLocal》,作者:冰河。我们都知道,在多线程环境下访问同一个共享变量,可能会出现线程安全的问题,为了保证线程安全,我们往往会在访问这个共享变量的时候加锁,以达到同步的效果,如下图所示。对共享变量加锁虽然能够保证线程的安全,但......
  • 一文让你彻底掌握ThreadLocal
    本文分享自华为云社区《【高并发】一文带你彻底搞懂ThreadLocal》,作者:冰河。我们都知道,在多线程环境下访问同一个共享变量,可能会出现线程安全的问题,为了保证线程安全,我们往往会在访问这个共享变量的时候加锁,以达到同步的效果,如下图所示。对共享变量加锁虽然能够保证线程的安......
  • ThreadPoolExecutor来创建和执行线程池的基本步骤
    ThreadPoolExecutor是Java提供的一个线程池实现,它提供了对线程池的更灵活和精细的控制。可以通过ThreadPoolExecutor来管理和执行多个线程任务,以提高应用程序的性能和效率。下面是使用ThreadPoolExecutor来创建和执行线程池的基本步骤:创建一个ThreadPoolExecutor实例,可以通过Thread......
  • 剥下“java.lang.OutOfMemoryError: unable to create new native thread”的外衣
     星期一早上到了公司,据称产品环境抛出了最可爱的异常—OutOfMemory, 它是这样来描述他自己的:java.lang.OutOfMemoryError:unabletocreatenewnativethread而且这位仁兄竟然还堂而皇之地同时出现在了3个application里面,所有应用全部遭殃。那可爱的OOM是如何产生的呢?直接原因......