首先,event loop 就是一个普通 Python 对象,您可以通过 asyncio.new_event_loop() 创建无数个 event loop 对象。只不过,loop.run_xxx() 家族的函数都是阻塞的,比如 run_until_complete() 会等到给定的 coroutine 完成再结束,而 run_forever() 则会永远阻塞当前线程,直到有人停止了该 event loop 为止。所以在同一个线程里,两个 event loop 无法同时 run,但这不能阻止您用两个线程分别跑两个 event loop。

初始情况下,get_event_loop() 只会在主线程帮您创建新的 event loop,并且在主线程中多次调用始终返回该 event loop;而在其他线程中调用 get_event_loop() 则会报错,除非您在这些线程里面手动调用过 set_event_loop()。

以上内容总结:
我们想运用协程,首先要生成一个loop对象,然后loop.run_xxx()就可以运行协程了,而如何创建这个loop, 方法有两种:对于主线程是loop=get_event_loop(). 对于其他线程需要首先loop=new_event_loop(),然后set_event_loop(loop)。
new_event_loop()是创建一个event loop对象,而set_event_loop(eventloop对象)是将event loop对象指定为当前协程的event loop,一个协程内只允许运行一个event loop,不要一个协程有两个event loop交替运行。

综上: 一个协程任务,不能运行在两个及两个以上不同的循环中。一个循环体可以运行多个不同的协程任务。

python3 异步 asyncio get_event_loop new_event_loop 使用相关推荐

  1. python3 异步 asyncio aiohttp aiohttp-requests aiofiles 使用

    asyncio asyncio 是用来编写 并发 代码的库,使用 async/await 语法. asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库, ...

  2. python3 异步 asyncio 动态添加任务

    asyncio.run_forever()下动态添加任务 方法一.asyncio.run_coroutine_threadsafe(coroutine, loop) 方法二.asyncio.call_ ...

  3. python3 异步错误 asyncio.Semaphore RuntimeError: Task got Future attached to a different loop

    错误现象 asyncio.Semaphore RuntimeError: Task got Future attached to a different loop asyncio.Semaphore ...

  4. python3异步编程_协程 Python异步编程(asyncio)

    协程(Coroutine) 也可以被称为微线程,是一种用户态内的上下文切换技术.简而言之,其实就是通过一个线程实现代码块相互切换执行. 直接上代码,例如: 同步编程 import time def f ...

  5. python3异步task_并发,异步编程_Python中的asyncio模块中的Future和Task的区别?,并发,异步编程,python,asyncio - phpStudy...

    Python中的asyncio模块中的Future和Task的区别? 问题一 按照官方文档的描述,Task是Futrue的一个subclass,标准库中也分别提供了create_task和create ...

  6. [进阶] --- Python3 异步编程详解(史上最全篇)

    [进阶] - Python3 异步编程详解:https://blog.csdn.net/lu8000/article/details/45025987 参考:http://aosabook.org/e ...

  7. [转][进阶]-Python3 异步编程详解

    目录 1 什么是异步编程 1.1 阻塞 1.2 非阻塞 1.3 同步 1.4 异步 1.5 并发 1.6 并行 1.7 概念总结 1.8 异步编程 1.9 异步之难(nán) 2 苦心异步为哪般 2. ...

  8. [进阶]-Python3 异步编程详解(史上最全篇)

    目录 1 什么是异步编程 1.1 阻塞 1.2 非阻塞 1.3 同步 1.4 异步 1.5 并发 1.6 并行 1.7 概念总结 1.8 异步编程 1.9 异步之难(nán) 2 苦心异步为哪般 2. ...

  9. Python3 异步编程详解

    1 什么是异步编程 1.1 阻塞 程序未得到所需计算资源时被挂起的状态. 程序在等待某个操作完成期间,自身无法继续干别的事情,则称该程序在该操作上是阻塞的. 常见的阻塞形式有:网络I/O阻塞.磁盘I/ ...

最新文章

  1. 男人最不该做的7件事
  2. 浅谈Service Mesh体系中的Envoy
  3. android r 编译找不到头文件_kOS(1):编译
  4. Spring Data 分页和排序 PagingAndSortingRepository的使用(九)
  5. netmiko 记录日志_netmiko连接网络设备
  6. android 标题栏进度圈使用方法,Android 标题栏显示进度条
  7. python-图书管理系统4-最终完成界面代码文件
  8. Adaptive Platform AUTOSAR(AP)平台的四个基本概念
  9. C3P0连接池的配置方式
  10. au计算机内录音乐,电脑中如何使用 Audition 内录声音
  11. 未在此计算机上注册ActiveX控件!!!
  12. Unity 镜子反射特效
  13. MATLAB常用的滤波函数比较:均值滤波 和 中值滤波
  14. html5个性音乐播放器,9款优秀HTML5音乐播放器 - 米扑博客
  15. 安卓投屏大师TC DS如何把手机声音传输到电脑教程
  16. macOS下快速复制文件或文件夹路径
  17. 互联网行业职位介绍——PM,RD,FE,UE,UI,QA,OP,DBA,BRD,MRD, PRD,FSD等
  18. vh布局移动端软键盘弹起改变高度问题
  19. CF1622E Math Test(技巧)
  20. php安全新闻早八点-Microdoor-第二季

热门文章

  1. Ansible — Overview
  2. 5G NGC — 关键技术 — MEC 边缘云
  3. Go 语言编程 — gorm 的数据完整性约束
  4. 4G EPS 的接口类型
  5. Simulink仿真教程6---对控制系统的阶跃响应进行仿真
  6. Spring MVC 拦截器
  7. AC日记——[USACO07DEC]手链Charm Bracelet 洛谷 P2871
  8. MDT 2013 从入门到精通之SQL Computer Unattended Files
  9. html5开发之viewport使用
  10. “Duke选择大奖”荟萃2009最具创新的Java技术应用