栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python异步 asyncio 异步文件下载

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python异步 asyncio 异步文件下载

图片测试

异步 50
测试下载100个图片
耗时:1.95628 s
代码如下

代码如下

import asyncio
import aiohttp
import time
import random

async def fetch(session,url):
    async with session.get(url, verify_ssl=False) as response:
         with open('pdf/' + str(random.randint(1,9999)) + '.jpg','ab') as f:
            while True:
                chunk = await response.content.read(1024)
                if not chunk:
                    break
                f.write(chunk)

async def main(urlList):
    async with aiohttp.ClientSession() as session:
        task = [ asyncio.create_task( fetch(session,url)) for url in urlList ]
        done,pending = await asyncio.wait(task)

if __name__ == '__main__':
    # 设置异步任务数
    numbers_of_async = 50
    lastTime = time.time()
    urlList = ['图片下载网址' for i in range(100)]
    numbers_of_times = int(len(urlList)/numbers_of_async) if not len(urlList)%numbers_of_async else int(len(urlList)/numbers_of_async) + 1
    for number in range(numbers_of_times):
        asyncio.run(main(urlList[number*numbers_of_async:number*numbers_of_async+numbers_of_async]))
    print("耗时 %.5f s"%(time.time() - lastTime))


PDF测试

异步 50
测试下载 100 个pdf
耗时:44.07051 s
代码如下

import asyncio
import aiohttp
import time
import random

async def fetch(session,url):
    async with session.get(url, verify_ssl=False) as response:
         with open('pdf/' + str(random.randint(1,9999)) + '.pdf','ab') as f:
            while True:
                chunk = await response.content.read(1024)
                if not chunk:
                    break
                f.write(chunk)

async def main(urlList):
    async with aiohttp.ClientSession() as session:
        task = [ asyncio.create_task( fetch(session,url)) for url in urlList ]
        done,pending = await asyncio.wait(task)

if __name__ == '__main__':
    # 设置异步任务数
    numbers_of_async = 100
    lastTime = time.time()
    urlList = ['pdf下载网址' for i in range(100)]
    numbers_of_times = int(len(urlList)/numbers_of_async) if not len(urlList)%numbers_of_async else int(len(urlList)/numbers_of_async) + 1
    for number in range(numbers_of_times):
		asyncio.run(main(urlList[number*numbers_of_async:number*numbers_of_async+numbers_of_async]))
    print("耗时 %.5f s"%(time.time() - lastTime))



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/444434.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号