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)
如果使用异步编程的时候遇到第三方模块不支持的时候,可以使用
 
 

4.Future对象的更多相关文章

  1. Java异步调用Future对象

    Future类存在于JDK的concurrent包中,主要用途是接收Java的异步线程计算返回的结果. 个人理解的使用场景大概如下: 有两个任务A和B,A任务中仅仅需要使用B任务计算成果,有两种方法实 ...

  2. 线程笔记:Future模式

    线程技术可以让我们的程序同时做多件事情,线程的工作模式有很多,常见的一种模式就是处理网站的并发,今天我来说说线程另一种很常见的模式,这个模式和前端里的ajax类似:浏览器一个主线程执行javascri ...

  3. java Future 接口介绍

    (转自:http://blog.csdn.net/yangyan19870319/article/details/6093481) 在Java中,如果需要设定代码执行的最长时间,即超时,可以用Java ...

  4. java多线程系类:JUC线程池:06之Callable和Future(转)

    概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.co ...

  5. java-并发-高级并发对象1

    以往说到的线程对象都是java平台中非常初级的API,用于处理一些基本的任务,对于一些复杂高级的工作,就需要一些高级的并发对象,尤其是针对于当今的应用程序,要充分利用现在的多核多处理器系统的性能. 以 ...

  6. Java多线程系列--“JUC线程池”06之 Callable和Future

    概要 本章介绍线程池中的Callable和Future.Callable 和 Future 简介示例和源码分析(基于JDK1.7.0_40) 转载请注明出处:http://www.cnblogs.co ...

  7. Java多线程与并发库高级应用-Callable与Future的应用

    Callable这种任务可以返回结果,返回的结果可以由Future去拿 >Future取得的结果类型和Callable返回的结果类型必须一致,这是通过泛型来实现的. >Completion ...

  8. Java并发编程核心方法与框架-Future和Callable的使用

    Callable接口与Runnable接口对比的主要优点是Callable接口可以通过Future获取返回值.但是Future接口调用get()方法取得结果时是阻塞的,如果调用Future对象的get ...

  9. Callable 和 Future接口 学习

    * Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它线程执行的任务. * Callable和Runnable有几点不同: * (1)C ...

随机推荐

  1. LuoguP5322 [BJOI2019]排兵布阵(DP)

    城为物,人为容,价值?排序后,一切都明了 #include <iostream> #include <cstdio> #include <cstring> #inc ...

  2. 一文带你认知定时消息发布RocketMQ

    摘要:DMS任意时间定时消息能力发布. DMS是华为云的分布式消息中间件服务.适用于解决分布式架构中的系统解耦.跨系统跨地域数据流通.分布式事务协调等难题,协助构建优雅的现代化应用架构,提供可兼容 K ...

  3. MySQL事务概念与流程和索引控制

    MySQL事务概念与流程和索引控制 视图 1.什么是视图 我们在执行SQL语句其实就是对表进行操作,所得到的其实也是一张表,而我们需要经常对这些表进行操作,拼接什么的都会产生一张虚拟表,我们可以基于该 ...

  4. java数组---稀疏数组与数组之间的相互转化

    public static void main(String[] args) { int[][]array1=new int[11][11]; array1[1][2]=1; array1[2][3] ...

  5. 【JDBC】学习路径3-密码登录&SQL注入攻击

    最后再提醒一句,每次在测试JDBC程序的时候,一定要确保MySQL正在运行. 打开控制台(终端),输入mysql 如果没启动,则出现以下提示: Mac端启动MySQL数据库,需要在系统便好设置中启动. ...

  6. 第十一篇:vue.js监听属性(大作业进行时)

    这个知识点急着用所以就跳过<计算属性>先学了 首先理解一下什么是监听:对事件进行监控,也就是当我进行操作(按了按钮之类的事件)时,会有相应的事情发生 上代码 <div id = &q ...

  7. 离线方式安装高可用RKE2 (版本: v1.22.13+rke2r1)记录

    说明: 想要了解RKE2可以到官网(https://docs.rke2.io 或 https://docs.rancher.cn/docs/rke2/_index/)看最新资料 用官网给出的离线安装( ...

  8. Gitea 1.17.2 | 带来视觉提升、完善资源校验、加强安全性等42项优化

    Gitea 1.17.2 合并了 42 个 Pull Request,现已正式发布,我们建议所有用户升级到此版本.您可以到阅读原文了解更详细的介绍. 致谢:@zeripath 为 Gitea 贡献了诸 ...

  9. ConcurrentDictionary<T,V> 的这两个操作不是原子性的

    好久不见,马甲哥封闭居家半个月,记录之前遇到的一件小事. ConcurrentDictionary<TKey,TValue>绝大部分api都是线程安全且原子性的, 唯二的例外是接收工厂委托 ...

  10. Windows 10中蓝牙鼠标连接

    最近遇到了一个问题,Windows 10中的蓝牙鼠标无法连接. 在添加蓝牙鼠标的时候系统提示输入PIN码.通常在蓝牙连接两个系统的时候会需要双方输入PIN码来确认身份,但是鼠标这种设备是没有地方显示P ...