"""
import asyncio
async def func():
print("喵")
if __name__ == '__main__':
# # 协程对象要想运行,必须借助于event_loop
# # 拿到协程对象
f = func()
# # 拿到事件循环
# event_loop = asyncio.get_event_loop()
# # event_loop执行协程对象,直到对象内的内容执行完毕为止.
# event_loop.run_until_complete(f)
asyncio.run(f)
"""
'''
import asyncio
import time
async def func1():
print("我是func1开始")
await asyncio.sleep(1)
print("我是func1结束")
async def func2():
print("我是func2开始")
await asyncio.sleep(2)
print("我是func2结束")
async def func3():
print("我是func3开始")
await asyncio.sleep(3)
print("我是func3结束")
if __name__ == '__main__':
start = time.time()
f1 = func1()
f2 = func2()
f3 = func3()
# 将三个任务放在一起,组合成任务队列
tasks = [f1, f2, f3]
asyncio.run(asyncio.wait(tasks))
print(time.time()-start)
'''
'''
import asyncio
import time
async def download(url, t):
print("开始下载了")
await asyncio.sleep(t)
print("下载完了")
async def main():
urls = [
'http://www.baidu.com',
'http://www.abab.com',
'http://www.lll.com',
]
tasks = []
for url in urls:
task = asyncio.create_task(download(url, 3))
tasks.append(task)
await asyncio.wait(tasks)
if __name__ == '__main__':
asyncio.run(main())
'''
'''
import asyncio
async def func1():
print("我是func1开始")
await asyncio.sleep(1)
print("我是func1结束")
return 'func1的返回值'
async def func2():
print("我是func2开始")
await asyncio.sleep(2)
print("我是func2结束")
return 'func2的返回值'
async def func3():
print("我是func3开始")
await asyncio.sleep(3)
print("我是func3结束")
return 'func3的返回值'
async def main():
f1 = func1()
f2 = func2()
f3 = func3()
tasks = [asyncio.create_task(f1), asyncio.create_task(f3), asyncio.create_task(f2)]
done, pending = await asyncio.wait(tasks)
for res in done:
print(res.result())
res = await asyncio.gather(*tasks)
print(res)
if __name__ == '__main__':
asyncio.run(main())
'''
import asyncio
import aiohttp
import aiofiles
async def download(url):
print(f'开始下载{url}')
file_name = url.split('/')[-1]
async with aiohttp.ClientSession() as session:
async with session.get(url) as res:
content = await res.content.read()
async with aiofiles.open(file_name, mode='wb') as f:
await f.write(content)
print(f'下载完成{url}')
async def main():
url_list = [
'https://oss-img.mengguzhiai.com/tutuji/20231018/jkyqd3icg24.jpg',
'https://oss-img.mengguzhiai.com/tutuji/20230626/qviw1aaxajt.jpg',
'https://oss-img.mengguzhiai.com/tutuji/20230407/ldsf23o44jg.jpg',
]
tasks = []
for url in url_list:
t = asyncio.create_task(download(url))
tasks.append(t)
await asyncio.wait(tasks)
if __name__ == '__main__':
asyncio.run(main()) 版权属于:CuteKitty
本文链接:https://blog.cutekitty.cn/index.php/archives/19/
作品采用
知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可