首页 > 编程语言 >Python - asyncio

Python - asyncio

时间:2022-11-20 15:12:58浏览次数:39  
标签:task 协程 coroutine Python print loop asyncio

目录

入门

'''
1.event_loop: 时间循环,相当于一个无限循环,可以把一些函数注册到这个时间循环上,当满足发生条件
  的时候,就调用相应的处理方法
2.coroutine: 协程对象类型,可以使用async 关键字来定义一个方法,这个方法在调用时不会立即被执行,而是会返回一个协程对象
  我们可以将协程对象注册到事件循环中,它会被事件循环调用,
3.task: 任务,这是协程对象的进一步封装,包含协程对象的各个状态
'''

# 定义一个协成对象
async def execute(x):
    print(f'Number:{x}')

coroutine = execute(1)
print(coroutine)
loop = asyncio.get_event_loop()
task = loop.create_task(coroutine)
print(task)
loop.run_until_complete(task)
print(task)


# out:
'''
<coroutine object execute at 0x000001C1361B3140>
<Task pending name='Task-1' coro=<execute() running at E:\PyProject\asyncioDemo\main.py:31>>
Number:1
<Task finished name='Task-1' coro=<execute() done, defined at E:\PyProject\asyncioDemo\main.py:31> result=None>
'''



# 也可以直接使用 :asyncio.ensure_future(coroutine) 创建task
async def execute(x):
    print(f'Number:{x}')

coroutine = execute(1)
task =  asyncio.ensure_future(coroutine)
loop = asyncio.get_event_loop()
print(task)
loop.run_until_complete(task)
print(task)

绑定回调函数

async def request():
    url = 'http://www.baidu.com'
    status = requests.get(url)
    return status

def callback(task): # 回调函数
    print(f'Status:{task.result()}')

coroutine = request()
task = asyncio.ensure_future(coroutine)
task.add_done_callback(callback)
print(task)

loop = asyncio.get_event_loop()
loop.run_until_complete(task) # 将协程对象注册到事件,并启动
print(task)

标签:task,协程,coroutine,Python,print,loop,asyncio
From: https://www.cnblogs.com/czzz/p/16908534.html

相关文章

  • python中wechat控制电脑
    [email protected]_register(itchat.content.TEXT)deftext_reply(s):ifs['ToUserName']=='filehelper':command=s[......
  • Python第八章实验报告
    一、实验题目Python第八章实例和实战作业二、实验目的和要求1.熟悉Pycharm的运行环境2.学习并掌握Python模块的运用三、主要仪器设备联想小新air15硬件:AMDR75700U......
  • Python算法(进阶)
    1.01背包问题有若干物品,每个物品有对应的重量weight和价值value,背包容纳重量为bag_weight,在背包允许的重量下,往背包内放物品,每个物品只能放一次,保证其价值最高w......
  • python 发送 application/x-www-form-urlencoded 类型的数据包
    在网上百度了很多,坑的要死,基本不咋好用,自己多尝试了几遍,成功实现了。data的构建方式data=f"page={page}&sign={sign}&t={t}"直接这么弄就可以了,不用搞的那么麻烦。......
  • Python第八章实验报告
    一.实验对象:《零基础学Python》第八章的3道实例和4道实战二.实验环境:IDLEShell3.9.7三.实验要求:学习使用标准模块和第三方模块四.实验过程:实例01创建计算BMI指数的......
  • aws dynamodb python boto3 调用方法
    dynamodb=boto3.resource('dynamodb')是boto3的高级接口,更底层的有:importboto3dynamodb_client=boto3.client('dynamodb')res=dynamodb_client.list_tables()......
  • Python OpenCV给证件照换底色
    ✅作者简介:热爱科研的算法开发者,Python、Matlab项目可交流、沟通、学习。......
  • 力扣744(java&python)- 寻找比目标字母大的最小字母(简单)
    题目:给你一个排序后的字符列表letters,列表中只包含小写英文字母。另给出一个目标字母 target,请你寻找在这一有序列表里比目标字母大的最小字母。在比较时,字母是依序循......
  • Python3-实战
    实战01(模拟支付宝蚂蚁森林的能量产生过程)1print("查询能量请输入能量来源!退出程序请输入0")2source=input("能量来源如下:\n生活缴费,行走捐,共享单车,线下支付,网......
  • python面试题常用语句
    一、比较与交换1.比较并输出大的print(aifa>belseb)2.交换两个元素a,b=b,alist1[i],list[j]=list1[j],list[i] 二、排序1.字符串排序s='aaccbgd'pri......