当前位置:首页>python>1524 行代码统治 Python 进度条 12 年——tqdm 的极简设计哲学

1524 行代码统治 Python 进度条 12 年——tqdm 的极简设计哲学

  • 2026-07-01 15:23:20
1524 行代码统治 Python 进度条 12 年——tqdm 的极简设计哲学

GitHub: https://github.com/tqdm/tqdm

一句话总结

Python 生态中最广泛使用的进度条库,以「零依赖 + 60ns/迭代」的极致简洁和低开销,在 12 年间成为 Python 基础设施级别的事实标准,被 PyPI 上数万个包依赖。

值得关注的理由

  1. Python 基础设施级存在:31K Stars、PyPI 下载量长期位于前列,几乎所有涉及循环/流处理的 Python 项目都直接或间接依赖 tqdm,包括 Hugging Face、Keras、pandas 等明星项目
  2. 极简设计的典范:核心代码仅 1,524 行(std.py),零外部依赖,60ns/迭代开销,是「做好一件事」的 Unix 哲学在 Python 库中的教科书级实现
  3. 架构可迁移性高:装饰器包装迭代器、EMA 速率平滑、环境变量覆盖参数默认值(envwrap)、弱引用实例管理等模式具有广泛的复用价值

项目画像

维度数据
GitHubhttps://github.com/tqdm/tqdm
Star / Fork31,053 / 1,441
代码行数9,184 行代码(Python 8,819 行,64 个文件)
项目年龄12.5 年(2013-10-26 首次提交)
开发阶段成熟维护(2015-2021 活跃期年均 200+ 提交;2022 至今年均约 50 提交,v4.67.3)
贡献模式BDFL 主导(Casper da Costa-Luis 贡献 75.7% 提交)
热度定位基础设施级(不追求 Star 增长,靠被依赖量取胜)
质量评级代码[优秀] 文档[优秀] 测试[完善]

作者视角:为什么存在这个项目

创始人/作者背景

tqdm 由 Noam Yorav-Raphael (noamraph) 于 2013 年 10 月创建,灵感来源于 Python 缺乏一个「即插即用」的进度条工具。2015 年项目迁移到独立的 GitHub 组织,并由 Casper da Costa-Luis (casperdcl) 接手主导开发至今。Casper 是伦敦的计算物理学家,贡献了 1,541 次提交(占总数 75.7%),是事实上的唯一核心维护者。

问题判断

2013 年的 Python 生态中,显示循环进度的需求普遍存在,但已有方案(如 python-progressbar,800ns/迭代)要么开销大、要么 API 笨重、要么依赖 curses 等系统库。Noam 的核心洞察是:进度条不应该是一个需要「配置」的东西,它应该是 tqdm(range(N)) 一行代码能完成的事。这个洞察精准到不能再精准——任何增加使用摩擦的进度条库都注定被淘汰。

解法哲学

tqdm 的设计哲学可以用三个词概括:简、快、广

  1. :核心 API 只有一个函数 tqdm(iterable),零配置即可工作。所有 30+ 个参数都有合理默认值,且可通过环境变量 TQDM_* 全局覆盖
  2. :60ns/迭代的开销通过精细的优化实现——__iter__ 中将实例变量提升为局部变量(Python 的 LOAD_FAST 比 LOAD_ATTR 快约 40%)、miniters + mininterval 双层过滤避免不必要的时间检查
  3. 广:通过继承体系支持 console、Jupyter、Matplotlib GUI、Tkinter、Rich、asyncio、CLI 管道等所有场景,但核心零依赖

明确不做的:不做花哨的动画(那是 alive-progress 的领地),不做丰富的终端 UI(那是 Rich 的领地),只做「让你一行代码看到进度」。

战略意图

tqdm 是一个纯社区驱动的开源工具库,没有商业化意图。它的「战略」就是成为 Python 生态中进度条的事实标准——这一目标已经完全实现。项目名称本身(源自阿拉伯语 taqaddum「进度」,也是西班牙语 te quiero demasiado「我非常爱你」的缩写)已成为 Python 社区的通用词汇。

核心价值提炼

创新之处

  1. 一行代码 API 范式 — 新颖度 5/5 (在 2013 年) · 实用性 5/5 · 可迁移性 5/5
    • tqdm(iterable) 的包装器模式开创了「零侵入增强迭代器」的先河。不需要修改循环体、不需要初始化/销毁、不需要回调——只需包一层。这个模式后来被无数库模仿(如 Rich track())。
  2. envwrap 环境变量覆盖装饰器 — 新颖度 4/5 · 实用性 4/5 · 可迁移性 5/5
    • @envwrap("TQDM_") 自动将 TQDM_MININTERVAL=0.5 等环境变量映射到函数参数,优先级为 调用参数 > 环境变量 > 签名默认值。通过 inspect.signature 反射参数签名,自动类型转换。完全通用,可用于任何需要环境变量配置的库。
  3. 双层过滤更新策略 — 新颖度 3/5 · 实用性 5/5 · 可迁移性 4/5
    • 先检查迭代计数 miniters(整数比较,极快),通过后才检查时间 mininterval(time() 系统调用,约 50-100ns)。dynamic_miniters 根据 EMA 历史速率自动调整阈值。任何高频事件的节流/采样系统都能借鉴。
  4. TMonitor 后台监控线程 — 新颖度 3/5 · 实用性 4/5 · 可迁移性 3/5
    • 守护线程每 10 秒检查所有 tqdm 实例,当 miniters 被设过大导致长时间不更新时(超过 maxinterval)自动重置为 1 并触发刷新。用 WeakSet 管理实例避免内存泄漏。解决了迭代速率突变导致进度条「看似卡住」的微妙问题。
  5. auto 智能后端选择 — 新颖度 3/5 · 实用性 5/5 · 可迁移性 4/5
    • from tqdm.auto import tqdm 运行时自动检测环境:Jupyter Notebook 用 ipywidgets、console 用标准 stderr、支持 asyncio。通过 MRO 多继承组合功能,核心逻辑仅 40 行。

可复用的模式与技巧

模式描述适用场景
Iterator Wrapper用 __iter__ + yield 透明包装可迭代对象,在不改变外部接口的前提下拦截迭代过程需要观察/增强迭代的任何场景
双重门控节流计数器门控(整数比较,O(1))→ 时间门控(time() 调用)→ 实际操作,EMA 自适应高频事件的展示/记录/采样
WeakSet 实例注册弱引用集合跟踪所有活跃实例,自动随 GC 清理,不造成内存泄漏全局状态管理、连接池、插件系统
envwrap 参数注入从环境变量自动填充函数参数默认值,通过签名反射实现类型推断库/框架的零代码配置
Monkey-patch 集成tqdm.pandas() 给第三方类注入 progress_apply,闭包包装原方法无侵入地增强第三方库
FormatReplace 探测通过自定义 __format__ 计数器检测格式字符串中是否使用了某个占位符条件渲染、惰性计算
DisableOnWriteError捕获管道断裂错误后静默禁用输出而非崩溃需要优雅降级的 IO 操作

关键设计决策

  1. 零外部依赖 — 牺牲开箱即用的花哨效果(如彩色、动画),换来极低的安装摩擦和极广的兼容性
  2. 继承而非组合的后端体系 — notebook.tqdm、gui.tqdm_gui、tk.tqdm_tk、rich.tqdm_rich 都继承自 std.tqdm,只需重写 display()/close()/clear() 三个方法
  3. 默认输出到 stderr — 不污染 stdout,使 CLI 管道模式(seq | tqdm | wc)天然可用
  4. MPL-2.0 + MIT 双许可 — 允许在闭源项目中使用,同时 MPL 要求修改后的文件必须开源,巧妙平衡了开源和商业需求

竞品格局与定位

竞品对比矩阵

维度tqdmRich Progressalive-progressprogressbar2progiter
Stars31K51K (整个 rich)5.5K0.9K0.1K
核心定位极简进度条丰富终端 UI动画进度条经典进度条无线程极简
每迭代开销~60ns较高较高~800ns~60ns
外部依赖0多个多个00
Jupyter 支持原生 widget有限有限
pandas 集成原生 monkey-patch
CLI 管道原生支持
asyncio原生支持

差异化护城河

  1. 生态锁定:被 Hugging Face transformers、PyTorch Lightning、Keras、scikit-learn 等基础库依赖,形成了无法替代的供应链位置
  2. API 先发优势:tqdm(iterable) 的一行代码范式已成为行业标准,竞品都在模仿但无法超越先发优势和心智占有率
  3. 全场景覆盖:console + Jupyter + GUI + CLI + async + pandas + keras + dask + telegram/discord/slack,没有任何单一竞品能覆盖同等广度
  4. 零依赖优势:在容器化、CI、生产环境、安全受限环境中,零依赖是不可替代的优势

生态定位

tqdm 不是「进度条库」的竞争者,而是 Python 生态中「进度条」概念的代名词。它的生态位类似于 requests 之于 HTTP 请求——不是功能最强大的,但是最广泛使用和最无摩擦的。与 Rich 不是零和竞争关系:Rich 做「漂亮的终端」,tqdm 做「无感的进度条」,两者通过 tqdm.rich 后端互补共存。

套利机会分析

  • 信息差:不存在信息差套利——tqdm 是被充分发现的基础设施。但其 envwrap 装饰器模式和双层更新节流策略作为通用编程技巧,被大多数用户忽视,值得学习和复用
  • 技术借鉴:envwrap 环境变量覆盖、EMA 速率平滑、WeakSet 实例管理是最具迁移价值的三个模式,可直接用于任何需要全局状态管理和速率估算的系统
  • 生态位:「做好进度条这一件事」的极致简洁路线已被 tqdm 占据,后来者应选择差异化方向
  • 趋势判断:项目已进入稳定维护期,不会有爆发式增长,也不会衰落

风险与不足

  1. 单人维护风险:Casper da Costa-Luis 一人贡献 75.7% 的代码,Bus Factor = 1。但 12 年历史和项目成熟度缓解了此风险
  2. Python 3.7 兼容性负担:仍支持已 EOL 的 Python 3.7,增加了维护成本和代码复杂度
  3. GUI 后端实验性:tqdm.gui(Matplotlib)和 tqdm.tk(Tkinter)标注为实验性质多年,缺乏测试覆盖
  4. v5.0 永远在路上:Issue #35(2015 年创建,74 评论)讨论 tqdm v5 的重大重构,至今未落地
  5. 类型注解缺失:几乎没有 type hints,不利于现代 Python 开发体验

行动建议

  • 如果你要用它:直接 pip install tqdm。推荐 from tqdm.auto import tqdm 获得自动环境检测。需要 pandas 集成用 tqdm.pandas();需要多线程用 tqdm.contrib.concurrent.thread_map;CI 环境可用 TQDM_DISABLE=True 全局禁用
  • 如果你要学它:重点关注 tqdm/std.py:1160-1196 — __iter__ 方法(迭代器包装和性能优化精髓);tqdm/utils.py:34-100 — envwrap 装饰器(通用环境变量参数覆盖);tqdm/auto.py — 运行时环境自动检测(仅 41 行);tqdm/_monitor.py — 后台监控线程(仅 96 行)
  • 如果你要 fork 它:添加完整类型注解;移除 Python 3.7 兼容性代码;将 GUI 后端推向稳定或明确弃用;考虑 Rust/C 扩展实现核心循环

知识入口

资源链接
官方文档tqdm.github.io
PyPIpypi.org/project/tqdm
DeepWikideepwiki.com/tqdm/tqdm
Zread.aizread.ai/tqdm/tqdm
JOSS 论文doi.org/10.21105/joss.01277

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-04 08:38:39 HTTP/2.0 GET : https://f.mffb.com.cn/a/491679.html
  2. 运行时间 : 0.361923s [ 吞吐率:2.76req/s ] 内存消耗:4,988.16kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=2eb3a823c2840935c7c194f40a3254f4
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000806s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001218s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.100851s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.047355s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000840s ]
  6. SELECT * FROM `set` [ RunTime:0.004387s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000629s ]
  8. SELECT * FROM `article` WHERE `id` = 491679 LIMIT 1 [ RunTime:0.040464s ]
  9. UPDATE `article` SET `lasttime` = 1783125520 WHERE `id` = 491679 [ RunTime:0.005312s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 66 LIMIT 1 [ RunTime:0.003091s ]
  11. SELECT * FROM `article` WHERE `id` < 491679 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.011440s ]
  12. SELECT * FROM `article` WHERE `id` > 491679 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.005942s ]
  13. SELECT * FROM `article` WHERE `id` < 491679 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.006652s ]
  14. SELECT * FROM `article` WHERE `id` < 491679 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.019317s ]
  15. SELECT * FROM `article` WHERE `id` < 491679 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.027318s ]
0.363513s