我想快点儿拿到文件——08

本文介绍了Python的异步编程,包括使用`asyncio`库创建和管理协程。通过示例展示了如何使用`asyncio.create_task`并发执行任务,以及如何从同步代码迁移到异步代码,涉及文件下载和数据处理。适合Python初学者及进阶者学习。
摘要由CSDN通过智能技术生成

1——找到需要的内容

2——Python实现

2.1 新手体验

# author: mmm
# datetime:2022/6/28 20:26 周二
# software: PyCharm
"""
文件说明:
"""
import asyncio
async def fun1():  # 1. 定义协程函数
    print('2022年6月26日22:09:13')
    asyncio.sleep(2)
    print('2022年6月28日20:24:38')
# asyncio.run(fun1())  # 1.1 fun1()是一个协程对象

async def fun2():
    print('发送请求')
    await asyncio.sleep(2)  # 协程对象;task对象
    print('结束啦')

async def fun3():
    task1 = asyncio.create_task(fun1())
    task2 = asyncio.create_task(fun2())
    # await task1
    # await task2
    finishs, waits = await asyncio.wait([task1, task2])  # 任务列表——完成与等待
    print(finishs)
asyncio.run(fun3())

2.2 warm up

# author: mmm
# datetime:2022/6/28 20:26 周二
# software: PyCharm
"""
文件说明:
"""
import asyncio
import json
import requests
import aiohttp  # 单线程异步协程

async def download(urls):
    print('开始下载文件')
    file_name = urls.split('/')[-1][:6]
    suffix = urls.split('.')[-1]
    async with aiohttp.ClientSession() as sess:
        async with await sess.get(url=urls) as response:
            # sess.post() 对应post方法
            # response.text()  requests的text属性
            # response.read()  requests的content属性
            # json()
            data = await response.read()
            with open(f'c://mmm/{file_name}.{suffix}', 'wb') as ff:
                ff.write(data)
            print('下载好啦——(~ ̄▽ ̄)~阿啦啦啦')

url_list = ['http://www.jkl.com.cn/UserFiles/upload/file/20220421/2021%E5%B9%B4%E6%8A%A5.pdf',
            'http://www.jkl.com.cn/UserFiles/c00814-14551490725.pdf',
            'http://www.jkl.com.cn/UserFiles/c1-14094425374.pdf'
            ]
task_list = [download(i) for i in url_list]
asyncio.run(asyncio.wait(task_list))

2.3 修改之前的项目(同步—>异步)

1.1 获得链接
1.2 获得页码
1.3 获取数据
1.4 数据保存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值