尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

python异步并发任务进度条

python异步并发任务进度条
📅 发布时间:2026/6/20 15:33:04

python异步并发任务进度条

import asyncio
import aiohttp
from tqdm import tqdm
from typing import List, Coroutine, Anyclass AsyncProgressBar:"""异步任务进度条管理器"""def __init__(self, total_tasks: int, desc: str = "异步任务进度"):self.total = total_tasksself.completed = 0self.pbar = tqdm(total=total_tasks, desc=desc, unit="task")def update(self):"""更新进度条(线程安全)"""self.completed += 1self.pbar.update(1)def close(self):"""关闭进度条"""self.pbar.close()async def async_task(session: aiohttp.ClientSession, url: str, pbar: AsyncProgressBar) -> Any:"""单个异步任务示例(以HTTP请求为例)"""try:async with session.get(url) as response:# 模拟任务处理耗时(可替换为实际业务逻辑)# await asyncio.sleep(0.1)result = {"url": url,"status": response.status,"content_length": response.content_length}return resultexcept Exception as e:return {"url": url, "error": str(e)}finally:# 任务完成后更新进度条pbar.update()async def run_async_tasks(tasks: List[Coroutine], max_concurrency: int = 10) -> List[Any]:"""运行异步任务并显示进度条:param tasks: 异步任务列表:param max_concurrency: 最大并发数(控制并发量):return: 所有任务的结果列表"""# 初始化进度条pbar = AsyncProgressBar(total_tasks=len(tasks))# 限制并发量(防止请求过多被封禁)semaphore = asyncio.Semaphore(max_concurrency)# 包装任务以支持并发限制async def bounded_task(task: Coroutine) -> Any:async with semaphore:return await task# 创建带并发限制的任务列表bounded_tasks = [bounded_task(task) for task in tasks]# 并发执行任务并收集结果results = await asyncio.gather(*bounded_tasks)# 关闭进度条pbar.close()return resultsasync def main():"""主函数:示例使用"""# 示例任务列表(100个HTTP请求任务)urls = [f"https://httpbin.org/get?num={i}" for i in range(100)]# 创建aiohttp会话(复用连接,提升性能)async with aiohttp.ClientSession() as session:# 构建任务列表pbar = AsyncProgressBar(total_tasks=len(urls))  # 初始化进度条tasks = [async_task(session, url, pbar) for url in urls]# 运行任务(最大并发20)results = await run_async_tasks(tasks, max_concurrency=20)# 输出结果统计success = sum(1 for r in results if "error" not in r)print(f"\n任务完成:成功 {success}/{len(results)}")if __name__ == "__main__":# 适配Python 3.7+的异步运行方式asyncio.run(main())

相关新闻

  • 集成灶烟机吸力大揭秘:排风量与风压表现优异的十大品牌权威榜单
  • 基于 GEE 利用 WorldPop 素材集批量导出 100 米分辨率人口影像数据与时序分析
  • 2025年视力保健公司权威推荐榜单:视力保护‌/视力健康管理‌/视力健康科技‌‌源头公司精选

最新新闻

  • 杭州黄金回收口碑榜单,连锁老店无隐藏收费上门回收更安心 - 奢品小当家
  • Selenium Grid架构解析与生产环境部署实践
  • 3D床垫哪家技术强 - GrowthUME
  • LLM评测一致性危机与Meta-Evaluation方法论
  • Qwerty Learner 终极指南:免费打造专业英语打字肌肉记忆
  • 安卓手机搭建渗透测试环境:Termux与Kali NetHunter实战指南

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号