• 多任务协程怎么写


    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
  • 相关阅读:
    MySQL 字符串与时间操作函数
    Redis消息订阅,事务,modules
    Redis数据结构
    Redis数据类型String
    Redis
    网络协议原理和lvs三种模型,调度算法和keepalived
    TCP连接状态,SYNC_RECV,CLOSE_WAIT,TIME_WAIT
    arp_ignore和arp_announce
    JMH和Disrupter
    容器CopyOnWriteList,ConcurrentHashMap,ConcurrentSkipListMap,BlockingQueue
  • 原文地址:https://www.cnblogs.com/KingOfCattle/p/12991766.html
Copyright © 2020-2023  润新知