python await 超时_python里并发执行协程时部分阻塞超时怎么办
展开全部
碰到这种需求时不要惊慌,可以使62616964757a686964616fe4b893e5b19e31333363393638用wait()里的timeout参数来设置等待时间,也就是从这个函数开始运行算起,如果时间到达协程没有执行完成,就可以不再等它们了,直接从wait()函数里返回,返回之后就可以判断那些没有执行成功的,可以把这些协程取消掉。例子如下import asyncio
async def phase(i):
print('in phase {}'.format(i))
try:
await asyncio.sleep(0.1 * i)
except asyncio.CancelledError:
print('phase {} canceled'.format(i))
raise
else:
print('done with phase {}'.format(i))
return 'phase {} result'.format(i)
async def main(num_phases):
print('starting main')
phases = [
phase(i)
for i in range(num_phases)
]
print('waiting 0.1 for phases to complete')
completed, pending = await asyncio.wait(phases, timeout=0.1)
print('{} completed and {} pending'.format(
len(completed), len(pending),
))
# Cancel remaining tasks so they do not generate errors
# as we exit without finishing them.
if pending:
print('canceling tasks')
for t in pending:
t.cancel()
print('exiting main')
event_loop = asyncio.get_event_loop()
try:
event_loop.run_until_complete(main(3))
finally:
event_loop.close()
结果输出如下:
starting main
waiting 0.1 for phases to complete
in phase 0
in phase 2
in phase 1
done with phase 0
1 completed and 2 pending
canceling tasks
exiting main
phase 1 canceled
phase 2 canceled
python await 超时_python里并发执行协程时部分阻塞超时怎么办相关推荐
- python异步爬虫_Python实战异步爬虫(协程)+分布式爬虫(多进程)
转自:https://blog.csdn.net/SL_World/article/details/86633611 在讲解之前,我们先来通过一幅图看清多进程和协程的爬虫之间的原理及其区别.(图片来源 ...
- python多线程好还是多协程好_深入浅析python中的多进程、多线程、协程
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- 你所谓的鸡肋?Python中的多进程、多线程和协程
本文撰写过程中参考了胡俊峰老师<Python程序设计与数据科学导论>课程的内容. 概念: 并发:一段时间内同时推进多个任务,但不一定要在一个时刻同时进行多个任务. 并行:一段时间内同时推进 ...
- 怎么更进一步学python_【百尺竿头,更进一步学Python】Python进阶课程——进程,线程和协程的区别...
本文带来各类奇怪的IT百科知识. [百尺竿头,更进一步学Python]Python进阶课程--进程:线程和协程的区别 现在多进程多线程已经是老生常谈了:协程也在最近几年流行起来.今天我们本文主要介绍进 ...
- 第七章|7.3并发编程|协程
1.协程 5个任务实现并发,放到1个线程里边:单线程是无法实现并行的:并发是看起来任务是同时运行的就可以了,其本质来回切换并保存状态. 单线程实现并发,切换+保存状态,协程要做的事情. cpu正在运行 ...
- python模块介绍-gevent介绍:基于协程的网络库
2019独角兽企业重金招聘Python工程师标准>>> python模块介绍-gevent介绍:基于协程的网络库 介绍 gevent是基于协程的Python网络库.特点: 基于lib ...
- 并发编程 - 协程 - 1.协程概念/2.greenlet模块/3.gevent模块/4.gevent实现并发的套接字通信...
1.协程并发:切+保存状态单线程下实现并发:协程 切+ 保存状态 yield 遇到io切,提高效率 遇到计算切,并没有提高效率 检测单线程下 IO行为 io阻塞 切 相当于骗操作系统 一直处于计算协程 ...
- Python中的线程、进程、协程以及区别
进程,是执行中的计算机程序.也就是说,每个代码在执行的时候,首先本身即是一个进程.一个进程具有:就绪,运行,中断,僵死,结束等状态(不同操作系统不一样). 运行中每个进程都拥有自己的地址空间.内存.数 ...
- Kotlin学习笔记24 协程part4 协程的取消与超时
参考链接 示例来自bilibili Kotlin语言深入解析 张龙老师的视频 1 如何取消协程 import kotlinx.coroutines.*/*** 协程的取消*/fun main() = ...
最新文章
- AI「复活」《延禧攻略》众生相
- 三朵云 华为_携手共进,华为云推出“Go Africa”计划
- Laravel用post提交表单常见的两个错误
- 【英语学习】【Level 07】U02 Live Work L4 Welcome to my neighborhood
- linux+PATH
- CNN入门讲解:不一样的Softmax
- python内置函数每个执行一次
- Eclipse配置KEmulator
- linux提示qq不是最终版本,Deepin中QQ出现当前版本存在安全风险,将于2019年10月30日停止使用的解决...
- 不断改进的FUP TC20H 台式多用途高速冷冻离心机
- C++多态的职工管理系统
- 计算机导论11.29课后总结
- 2021年全球及中国三元前驱体行业现状及竞争格局分析,基于海外新能源汽车发展,我国是最大出口国「图」
- Ubuntu Kylin如何关闭自动锁屏
- 不是运算容错,而是高温降频率,软件劣化老硬件
- 训练集、验证集和测试集这三个名词的区别
- 关于青岛某电视厂商新研发中心周边环境的思考
- 公司起名工具,有了它你就是半仙了
- Windows 鼠标右键注册表位置
- 暑期2020“大咖说开源”之吴雪 | 开源的商业创新
热门文章
- 矩形脉冲信号的频域分析_信号的时频域分析与窗函数作用
- 虚拟创业云|BBC幼儿英语启蒙动画Alphablocks字母积木全4季
- 干货|堆垛机上的制动电阻怎么选?
- 【精选】Python入门算法题(三)
- 2022-4-6 Leetcode 997.找到小镇的法官——【原来是图的问题啊~】
- CISP考试通过率高不高?
- 2022-3-17 MIT 6.828 Lab 3: User Environments | Part A: User Environments and Exception Handling
- 【现代机器人学】学习笔记一:位形空间
- HDU 3353 二分图的匹配,最大独立集==最小覆盖点
- revit版本linux,revit系列号2021版本的是什么?在哪里可以下载revit2021?