5.异步和非异步模块组合


import asyncio
import requests


async def download_image(url):
    # 发送请求下载图片,遇到网络下载图片时候的IO请求,自动切换其他任务
    print('开始下载', url)
    loop = asyncio.get_event_loop()
    # requests模块默认不支持异步操作,所有使用线程池配合实现
    # executor 可以是  ThreadPoolExecutor / ProcessPool  , 如果是None 则使用默认线程池
    future = loop.run_in_executor(None, requests.get, url)
    res = await future
    print('下载完成')


if __name__ == '__main__':
    url_list = [
        'https://www.autoimg.cn/img/xxxxx.jpg'
        'https://www.autoimg.cn/img/xxxxx.jpg'
        'https://www.autoimg.cn/img/xxxxx.jpg'
        'https://www.autoimg.cn/img/xxxxx.jpg'
    ]
    tasks = [download_image(url) for url in url_list]
    loop = asyncio.get_event_loop()
    loop.run_until_complete(asyncio.wait(tasks))

 

作者:木子七

出处:https://www.cnblogs.com/Mickey-7/p/16611266.html

posted @   木子七  阅读(40)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示
workspaces
keyboard_arrow_up dark_mode palette
选择主题