4.Future对象
2024-09-08 18:15:33
asyncio.Future对象
Future是Task类的基类
Task对象内部await结果的处理是基于Future对象来的
async def main():
# 获取当前事件循环
loop = asyncio.get_running_loop()
# 创建一个任务(Future对象)
fut = loop.create_future()
# 等待任务的最终结果(Future对象),没有结果会一直等待下期
await fut
asyncio.run(main())
async def set_after(fut):
await asyncio.sleep(2)
# 给fut赋值666
fut.set_result("666")
async def main():
# 获取当前事件循环
loop = asyncio.get_running_loop()
# 创建一个任务(Future对象),没有榜单任何行为。则这个任务永远不知道什么时候结束
fut = loop.create_future()
# 创建一个任务(task)对象,榜单了set_after函数,函数内部在2s后会给fut赋值
# 手动设置future任务的最终结果,那么fut就可以结束了
await loop.create_task(set_after(fut))
# 等待Future对象获取最终结果,否则一直等待下去
data = await fut
print(data)
asyncio.run(main())
concurrent.futures.Future对象
使用线程池、进程池实现异步时用到的对象
import time
from concurrent.futures import Future
from concurrent.futures.thread import ThreadPoolExecutor # 线程池
from concurrent.futures.process import ProcessPoolExecutor # 进程池
def func(v):
time.sleep(1)
print(v)
# 创建线程池
pool = ThreadPoolExecutor(max_workers=3)
for i in range(10):
# 线程池提交之后,会返回一个Future对象
fut = pool.submit(func, i)
print(fut)
如果使用异步编程的时候遇到第三方模块不支持的时候,可以使用
最新文章
- Sublime Text 3 全程详细图文原创教程(持续更新中。。。)
- 使用html5 FileReader获取图片,并异步上传到服务器(不使用iframe)
- c/s 与b/s构架
- Tableview 优化Cell的复用机制01
- C++类的底层机理
- iOS GCD简单使用
- elasticsearch插件之一:kibana
- sqoop导入数据到hive
- Android NDK 环境搭建 + 测试例程
- (转)android ndk 给结构体赋值的方法
- latex 批量注释
- 【树莓派】h2数据库操作相关
- 11.巨坑,注意了,关于显示不正常的问题,localstorage的存储问题
- chrome开发工具指南(七)
- 201521123027 <;java程序设计>;第九周学习总结
- Jquery购物车jsorder改进版,支持后台处理程序直接转换成DataTable处理
- js获取当前页面的url网址信息小汇总
- linux 内存使用情况详解
- Tomcat下bootstrap启动分析
- Angular ng-include 学习实例
热门文章
- MyBatis 01 概述
- java-RandomAccessFile操作以及IO流简单使用
- 744. 寻找比目标字母大的最小字母--LeetCode
- 对Jmeter-基础线程组的一点解释
- linux centos7开启防火墙端口
- 轻松月薪过万,NISP证书含金量有多重|NISP管理中心|网安伴|nisp
- 网站制作工具之EditPlus的使用
- 一文了解.Net的CLR、GC内存管理
- 【java】学习路径27-HashSet、TreeSet,HashMap
- Android蓝牙线控切歌、连接状态监听(无线耳机也适用)