ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

五、协程实现

2022-08-14 12:03:34  阅读:160  来源: 互联网

标签:task 协程 实现 print run event loop asyncio


解决阻塞问题:

import asyncio

async def request(url):
    print("正在请求的url",url)
    print('请求成功')
    return url
#async修饰的函数,调用之后返回一个协程对象
c = request("www.baidu.com")
#===========1方法==============
#创建一个事件循环对象
loop = asyncio.get_event_loop()
#将协程对象注册到loop中,然后启动loop
loop.run_until_complete(c)

#===========2方法:task的使用==============
loop = asyncio.get_event_loop()
#基于loop创建一个task对象
task = loop.create_task(c)
print(task)
#执行task
loop.run_until_complete(task)
print(task,"被执行后")

#===========2方法:future的使用==============
loop = asyncio.get_event_loop()
task = asyncio.ensure_future(c)
print(task)
loop.run_until_complete(task)
print(task)


def callback_func(task):
    print(task.result())

#绑定会掉函数
loop = asyncio.get_event_loop()
task = asyncio.ensure_future(c)
#将回掉函数返回到任务对象中
task.add_done_callback(callback_func)
loop.run_until_complete(task)

 

标签:task,协程,实现,print,run,event,loop,asyncio
来源: https://www.cnblogs.com/jxyl/p/16585138.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有