码迷,mamicode.com
首页 > 其他好文 > 详细

多任务协程怎么写

时间:2020-05-30 12:26:31      阅读:52      评论:0      收藏:0      [点我收藏+]

标签:response   url   run   并且   异步请求   出现   one   pip   对象   

1.多任务协程  pip install asyncio(协程的模块) 和 pip install aiohttp(支持网络异步请求的的模块)
第一步:创建任特殊函数,在函数定义前面加上async关键字(用来发送请求)
该函数特殊之处:1.调用后不会立即执行 2.函数调用后返回一个协程对象
第二步:创建协程对象(相当于调用特殊函数),协程对象是特殊的函数
第三步:创建任务对象:task = asyncio.ensure_future(协程对象),并且将任务对象绑定回调函数,该函数用来获取特殊函数的返回值,
常用来作数据解析,和持久化存储task.add_done_callback(parse),其中parse就是回调函数,该函数必须有一个参数,该参数就是该函数的
绑定者,也就是相应的task,该参数的result方法就是来获取特殊函数的返回值
任务对象就是高级的协程对象

第四步:创建事件循环对象:loop = asyncio.get_event_loop()
事件循环对象的作用相当于一个容器,用来存储我们的任务对象的,开启后,就可以对容器里面的任务对象执行异步处理
第五步:将任务对象存储到事件循环对象中: loop.run_until_complete(asyncio.wait(tasks)) #tasks表示的是任务列表
注意: 在特殊函数内部的实现语句中不可以出现不支持异步的模块代码,比如resquest(),所以我们使用aiohttp代替
aiohttp的使用:
with aiohttp.ClientSession() as sess: # 调用相应的模块
with sess.get(url=url) as response: # get的使用方法和我们的request.get()差不多,就是代理为prox参数
page_text = response.text()
return page_text
想用他实现协程还需要在每一个with前面async在每一个阻塞的前面加上await关键字
async with aiohttp.ClientSession() as sess:
async with await sess.get(url=url) as response:
page_text = await response.text()
return page_text


最后一个自己写的例子 https://www.cnblogs.com/KingOfCattle/p/12991757.html

多任务协程怎么写

标签:response   url   run   并且   异步请求   出现   one   pip   对象   

原文地址:https://www.cnblogs.com/KingOfCattle/p/12991766.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!