python3 异步 asyncio get_event_loop new_event_loop 使用
首先,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 使用相关推荐
- python3 异步 asyncio aiohttp aiohttp-requests aiofiles 使用
asyncio asyncio 是用来编写 并发 代码的库,使用 async/await 语法. asyncio 被用作多个提供高性能 Python 异步框架的基础,包括网络和网站服务,数据库连接库, ...
- python3 异步 asyncio 动态添加任务
asyncio.run_forever()下动态添加任务 方法一.asyncio.run_coroutine_threadsafe(coroutine, loop) 方法二.asyncio.call_ ...
- 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 ...
- python3异步编程_协程 Python异步编程(asyncio)
协程(Coroutine) 也可以被称为微线程,是一种用户态内的上下文切换技术.简而言之,其实就是通过一个线程实现代码块相互切换执行. 直接上代码,例如: 同步编程 import time def f ...
- python3异步task_并发,异步编程_Python中的asyncio模块中的Future和Task的区别?,并发,异步编程,python,asyncio - phpStudy...
Python中的asyncio模块中的Future和Task的区别? 问题一 按照官方文档的描述,Task是Futrue的一个subclass,标准库中也分别提供了create_task和create ...
- [进阶] --- Python3 异步编程详解(史上最全篇)
[进阶] - Python3 异步编程详解:https://blog.csdn.net/lu8000/article/details/45025987 参考:http://aosabook.org/e ...
- [转][进阶]-Python3 异步编程详解
目录 1 什么是异步编程 1.1 阻塞 1.2 非阻塞 1.3 同步 1.4 异步 1.5 并发 1.6 并行 1.7 概念总结 1.8 异步编程 1.9 异步之难(nán) 2 苦心异步为哪般 2. ...
- [进阶]-Python3 异步编程详解(史上最全篇)
目录 1 什么是异步编程 1.1 阻塞 1.2 非阻塞 1.3 同步 1.4 异步 1.5 并发 1.6 并行 1.7 概念总结 1.8 异步编程 1.9 异步之难(nán) 2 苦心异步为哪般 2. ...
- Python3 异步编程详解
1 什么是异步编程 1.1 阻塞 程序未得到所需计算资源时被挂起的状态. 程序在等待某个操作完成期间,自身无法继续干别的事情,则称该程序在该操作上是阻塞的. 常见的阻塞形式有:网络I/O阻塞.磁盘I/ ...
最新文章
- 男人最不该做的7件事
- 浅谈Service Mesh体系中的Envoy
- android r 编译找不到头文件_kOS(1):编译
- Spring Data 分页和排序 PagingAndSortingRepository的使用(九)
- netmiko 记录日志_netmiko连接网络设备
- android 标题栏进度圈使用方法,Android 标题栏显示进度条
- python-图书管理系统4-最终完成界面代码文件
- Adaptive Platform AUTOSAR(AP)平台的四个基本概念
- C3P0连接池的配置方式
- au计算机内录音乐,电脑中如何使用 Audition 内录声音
- 未在此计算机上注册ActiveX控件!!!
- Unity 镜子反射特效
- MATLAB常用的滤波函数比较:均值滤波 和 中值滤波
- html5个性音乐播放器,9款优秀HTML5音乐播放器 - 米扑博客
- 安卓投屏大师TC DS如何把手机声音传输到电脑教程
- macOS下快速复制文件或文件夹路径
- 互联网行业职位介绍——PM,RD,FE,UE,UI,QA,OP,DBA,BRD,MRD, PRD,FSD等
- vh布局移动端软键盘弹起改变高度问题
- CF1622E Math Test(技巧)
- php安全新闻早八点-Microdoor-第二季