首页 > 其他分享 >4.Future对象

4.Future对象

时间:2022-08-21 22:47:01浏览次数:49  
标签:fut 对象 await Future loop asyncio

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

标签:fut,对象,await,Future,loop,asyncio
From: https://www.cnblogs.com/Mickey-7/p/16611235.html

相关文章

  • http发送get/post调用,传参为json对象
    1.http请求工具类importcom.alibaba.fastjson.JSONObject;importorg.springframework.http.*;importorg.springframework.http.converter.StringHttpMessageConver......
  • Flask 学习-5.请求对象Request
    前言在Flask中由全局对象request来提供请求信息。Request请求对象首先,您必须从flask模块导入请求对象:fromflaskimportrequest通过使用method属性可以......
  • js对象拷贝方法
    Object.create(),浅拷贝constclone=Object.create(Object.getPrototypeOf(obj),Object.getOwnPropertyDescriptors(obj));Object.assign(targetObj,sourc......
  • Python入门系列(七)开发常说的“累”与“对象”
    类与对象Python是一种面向对象的编程语言。要创建类,请使用关键字classclassMyClass:x=5创建一个名为p1的对象,并打印x的值p1=MyClass()print(p1.x)所有类......
  • k8s部署Wordpress(定义不同的资源对象文件)
    1)新建namespace(名称空间)新建wordpress-blognamespace,将应用都部署到wordpress-blog这个命名空间下面。[23:17:36root@k8s-master~]#llnamespace.yamlpod.ymlse......
  • 面向对象
    面向过程面向过程程序特点面向过程思想对应的问题:面向过程这种程序设计理念,对应现实生活中某一个点上具体的问题,特别是对应解决问题过程中具体的操作步骤面向过程程......
  • Java学习 (25) 对象篇(05)抽象类&接口
    目录抽象类语法实例注意点具体讲解视频(狂神说Java)接口语法实例具体讲解视频(狂神说Java)抽象类abstract修饰符可以用来修饰方法也可以修饰类,如果修饰方法,那么该方法就是......
  • JAVA对象与JSON转换的各种方法-fastjson
    1<!--https://mvnrepository.com/artifact/com.alibaba/fastjson-->2<dependency>3<groupId>com.alibaba</groupId>4<artifactId>fastjson</artifactId>......
  • Java学习 (24) 对象篇(04)static关键字
    目录static关键字语法实例代码块语法实例引用库语法实例static关键字static在类中修饰成员变量,在方法中则修饰成员方法static在属性中叫做静态属性,在方法中叫做静态......
  • JSON数据和Java对象的相互转换
    JSON数据和Java对象的相互转换JSON解析器创建的解析器:Jsonlib,Gson,Fastjson,jacksonJSON转为Java对象使用步骤:导入jackson相关的jar包创建Jackson革新对象Obje......