async ensuer_future 和 add_done_callback 的用法
import os from loguru import logger logger.add(os.path.join(os.path.dirname(__file__) , os.path.basename(__file__).split('.')[0]+'.z.log')) import time import asyncio async def request_img(i): logger.debug(f'正在请求第{i}张图片') time.sleep(1) return f'第{i}张图片' def save_img(response): logger.debug(response) logger.debug(f'保存第{response.result()}图片') if __name__ == '__main__': tasks = [] for i in range(0,5): task = asyncio.ensure_future(request_img(i)) task.add_done_callback(save_img) tasks.append(task) loop = asyncio.get_event_loop() loop.run_until_complete(asyncio.wait(tasks)) loop.close() logger.debug('所有的图片请求下载完成') # 2023-07-10 21:52:51.166 | DEBUG | __main__:request_img:10 - 正在请求第0张图片 # 2023-07-10 21:52:52.167 | DEBUG | __main__:request_img:10 - 正在请求第1张图片 # 2023-07-10 21:52:53.173 | DEBUG | __main__:request_img:10 - 正在请求第2张图片 # 2023-07-10 21:52:54.179 | DEBUG | __main__:request_img:10 - 正在请求第3张图片 # 2023-07-10 21:52:55.185 | DEBUG | __main__:request_img:10 - 正在请求第4张图片 # 2023-07-10 21:52:56.192 | DEBUG | __main__:save_img:17 - <Task finished name='Task-1' coro=<request_img() done, defined at /Users/song/Code/script_python/cnblog_upload/src/run.py:9> result='第0张图片'> # 2023-07-10 21:52:56.193 | DEBUG | __main__:save_img:18 - 保存第第0张图片图片 # 2023-07-10 21:52:56.194 | DEBUG | __main__:save_img:17 - <Task finished name='Task-2' coro=<request_img() done, defined at /Users/song/Code/script_python/cnblog_upload/src/run.py:9> result='第1张图片'> # 2023-07-10 21:52:56.195 | DEBUG | __main__:save_img:18 - 保存第第1张图片图片 # 2023-07-10 21:52:56.195 | DEBUG | __main__:save_img:17 - <Task finished name='Task-3' coro=<request_img() done, defined at /Users/song/Code/script_python/cnblog_upload/src/run.py:9> result='第2张图片'> # 2023-07-10 21:52:56.195 | DEBUG | __main__:save_img:18 - 保存第第2张图片图片 # 2023-07-10 21:52:56.196 | DEBUG | __main__:save_img:17 - <Task finished name='Task-4' coro=<request_img() done, defined at /Users/song/Code/script_python/cnblog_upload/src/run.py:9> result='第3张图片'> # 2023-07-10 21:52:56.196 | DEBUG | __main__:save_img:18 - 保存第第3张图片图片 # 2023-07-10 21:52:56.196 | DEBUG | __main__:save_img:17 - <Task finished name='Task-5' coro=<request_img() done, defined at /Users/song/Code/script_python/cnblog_upload/src/run.py:9> result='第4张图片'> # 2023-07-10 21:52:56.196 | DEBUG | __main__:save_img:18 - 保存第第4张图片图片 # 2023-07-10 21:52:56.197 | DEBUG | __main__:<module>:30 - 所有的图片请求下载完成
标签:
python
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战