当前位置:首页>java>Python并发编程Ⅰ——基本概念

Python并发编程Ⅰ——基本概念

  • 2026-01-31 19:11:46
Python并发编程Ⅰ——基本概念

在一些特定的任务场景中,并发编程能够显著提升程序的执行效率。最早接触并发编程,是在处理海量年报文本时,需要从大量相互独立的 PDF 中提取符合特定规则的内容。由于这些年报之间不存在任何依赖关系,当时通过多进程并行处理,任务的整体执行时间被大幅压缩。而最近在调用大语言模型 API 的过程中,再次体会到了并发编程的价值,尤其是异步编程在 IO 密集型场景下所展现出的巨大优势。因此,决定系统性地梳理并学习这一部分内容,并将理解过程整理成文。由于我也是刚刚接触这部分知识,如有疏漏,欢迎批评指正。

1

什么是并发编程

并发编程并不是一个陌生的概念。无论是后端服务中高并发请求的处理、数据分析中的并行计算,还是现代 AI 系统中的多任务调度,其底层都离不开对并发模型的理解。

从硬件发展的角度看,随着摩尔定律逐渐逼近物理极限,单核 CPU 的频率提升已经难以持续。多核 CPU 成为常态后,如何更充分地利用有限的计算资源,在同一时间处理更多任务,成为软件层面必须面对的问题,而这正是并发编程所要解决的核心。

与并发密切相关、也最容易被混淆的概念是并行。Go 语言的设计者之一 Rob Pike 曾对两者作出过清晰区分:

并发指的是同时处理多件事,并行是同时做多件事,二者不同但有联系。

并发强调的是逻辑上的同时发生。多个任务在时间维度上交错推进,由调度器统一管理,它们未必真的在同一时刻执行。而并行则是物理意义上的同时执行,依赖多核 CPU 或多处理器,在同一时间点运行多条指令。

因此,并发不一定是并行,但并行一定属于并发的一种实现形式。

2

Python 并发编程的三种执行单元

在 Python 语境下,并发编程中最常被讨论的三种执行与调度单元是:进程、线程和协程。它们的根本区别在于——谁负责调度、资源如何隔离、切换成本有多高。

 进程(Process)

进程是操作系统进行资源分配和调度的基本单位。每个进程都拥有独立的地址空间、文件描述符、堆和栈,不同进程之间在内存层面完全隔离。这种隔离带来了良好的安全性和稳定性,但也意味着进程间通信成本较高。进程的创建和销毁需要操作系统内核参与,开销相对昂贵,因此更适合用于任务粒度较大、运行时间较长的场景。

线程(Thread)

线程是在进程内部进一步划分出的执行单元。一个进程可以包含多个线程,这些线程共享进程的大部分资源,但各自拥有独立的程序计数器和栈。由于共享内存,线程的创建和切换成本明显低于进程,线程间通信也更加高效。但与此同时,共享状态也引入了数据竞争、死锁等并发问题,使得程序调试和维护成本上升。

协程(Coroutine)

协程与进程、线程的最大不同在于,它并不是由操作系统调度的执行单元,而是由程序自身控制调度的一种“用户态并发”。如果说线程是操作系统管理的工人,那么协程就是“用户态”的轻量级线程,或者可以理解为一位拥有极高时间管理技巧的超级工人。协程的调度完全由程序自己(通常是用户空间的调度器或事件循环)控制,而不需要操作系统的内核介入。这意味着协程的切换几乎不消耗内核资源,速度极快。协程的核心思想是协作,当一个协程遇到需要等待的事情(比如等待网络数据返回)时,它会主动让出 CPU 的控制权,让另一个协程继续执行,而不是像线程那样傻傻地被操作系统强制挂起。

参考B站的一个UP主(Hucci)所举的一个非常形象的例子,便于读者通俗理解上述含义。假设你的操作系统是一家资源管理公司,管理着电脑上的各种资源,尤其是CPU时间还有内存。在这家资源管理公司当中,有很多个办公室,有的办公室负责微信,有的负责三角洲行动,每个办公室因此也会被分配到一定的资源,这每一间办公室就可以看作成一个进程。当然,每个办公室都要有各自的员工,最少有一个工人,这个工人就是主线程;也可以用很多工人,每个工人有各自的任务,每个人工人也就可以看成一个线程。那一个工人也可以同时负责多个小任务,比如接收消息的工人又要接收网络数据,又要处理本地缓存,他可以在网络数据还没到的时候,先处理本地缓存,数据到了再去处理网络数据。这种切换工作的方式叫做协程所以,协程仅仅是一种工作方式、调度方式,而进程和线程是真实存在的。

3

多进程、多线程还是协程

在实际开发中,并不存在一种“通用最优”的并发模型。选择的关键在于任务是计算密集型,还是 IO 密集型。

计算密集型任务:优先多进程

计算密集型任务的主要时间消耗在 CPU 运算上,例如视频编解码、复杂数值计算、大规模特征工程或机器学习训练。在这类场景中,CPU 始终处于高负载状态。

在 Python 中,多线程并不适合此类任务。一方面,线程频繁切换会引入额外开销;更关键的是,GIL会限制同一时刻只有一个线程执行 Python 字节码,使多线程无法在多核 CPU 上真正并行。

多进程通过创建多个独立的解释器实例,每个进程拥有各自的 GIL,可以将任务分配到不同 CPU 核心上并行执行,从而显著提升性能。虽然进程的启动成本较高,但在长时间、高强度计算任务中,这一代价是完全值得的。

IO 密集型任务:多线程或协程

IO 密集型任务的特点是:CPU 运算时间很少,大部分时间都在等待外部响应,例如网络请求、数据库查询或磁盘读写。

在这类场景中,多线程能够显著提升效率。当一个线程因 IO 阻塞时,操作系统可以立即调度其他线程使用 CPU。而且 Python 在执行 IO 操作时会主动释放 GIL,使多线程在 IO 场景下依然有效。

然而,当并发规模进一步扩大(例如成千上万的网络连接)时,多线程模型开始暴露出局限:线程数量受限、内存占用高、内核调度成本不断上升。此时,协程成为处理高并发 IO 的理想选择。协程切换完全发生在用户态,开销极低,一个进程内可以轻松管理成千上万个并发任务。当某个协程等待 IO 时,它不会占用 CPU 资源,事件循环只在数据就绪时将其唤醒,从而显著提升系统吞吐量。

4

Python的GIL锁

可能一些资料当中会提到,多线程不仅仅能解决IO密集型任务,同样能解决CPU密集型任务。但是,对于Python来说实则不然(确切来说python 3.14以前)。Python当中,解释器只能有一个线程真正运行。所以Python中的多线程其实是多个线程的任务依次执行,而不是同时执行。

GIL,全称 Global Interpreter Lock,是 CPython 解释器中的一种全局互斥锁,用于保证同一时刻只有一个线程在执行 Python 字节码。言简意赅地说,在任何时刻,无论你的 CPU 有多少个核心,Python 解释器只允许一个线程执行 Python 字节码。这意味着,即使你在 Python 中启动了 10 个线程运行在 10 核 CPU 上,同一瞬间也只有一个线程在真正运行,其他线程都在等待争夺这把锁。

GIL 的存在对 Python 的并发编程产生了深远的影响。对于计算密集型任务,Python 的多线程不仅无法利用多核加速,反而可能因为线程之间频繁争夺 GIL 以及由此带来的上下文切换开销,导致运行速度比单线程还要慢。这就是为什么在 Python 中处理繁重的计算任务时,社区一致推荐使用 multiprocessing 模块。多进程通过创建独立的解释器实例,每个进程都有自己的 GIL,从而绕过了这把锁的限制,实现了真正的并行计算。

对于IO 密集型任务,GIL 的影响其实微乎其微。这是因为 Python 解释器在执行 IO 操作(如读写文件、网络通信)时,会主动释放 GIL,允许其他线程获取锁并执行代码。等到 IO 操作完成后,线程再重新申请 GIL。因此,在爬虫、Web 服务器等以网络等待为主的场景下,Python 的多线程依然能够有效地利用 CPU 的空闲时间,大幅提升程序效率。

注:Python 3.14及以后正在逐步引入 opt-in 的 no-GIL 模式无 GIL 版本需要显式构建,且对第三方扩展存在兼容性要求。

5

一个智能体调用LLM API的并发示例

最后举一个简单的模拟LLM API调用场景的例子。

LLM API 的调用具有一个非常显著的特征:等待时间极长,但计算量极小。假设有 50 个智能体同时在调用 API。如果用多线程,你需要开 50 个线程。这 50 个线程在 99.9% 的时间里都在傻等 HTTP 响应。虽然操作系统能处理,但这占用了 50 个线程的栈内存,且涉及无意义的内核调度。相反,如果用协程的话,可以创建 50 个协程任务。在等待 LLM 回复的那几十秒里,这些任务处于挂起状态,几乎不占用 CPU,内存占用微乎其微。Python的事件循环只需要在数据回来时唤醒对应的回调即可。

以下为一个示例代码,仅做展示使用,并不能直接运行。

import asynciofrom concurrent.futures import ThreadPoolExecutor# IO 密集:调用 LLM APIasync def agent_chat(prompt):    response = await openai_async_client.chat.completions.create(...)    return response# CPU 密集:本地数据分析def analyze_data_locally(dataframe):    return dataframe.describe()async def main_controller():    # Step 1:异步调用 LLM    plan = await agent_chat("如何分析这个表格?")    # Step 2:将 CPU 计算移出事件循环    loop = asyncio.get_running_loop()    with ThreadPoolExecutor() as pool:        analysis_result = await loop.run_in_executor(            pool, analyze_data_locally, my_dataframe        )    # Step 3:继续异步调用 LLM    summary = await agent_chat(f"分析结果是:{analysis_result},请总结")

参考资料:

  1. 在Python中用多线程之前,需要先搞懂这些_哔哩哔哩_bilibili

  2. 《流畅的Python》 Luciano Ramalho著

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-07 12:16:11 HTTP/2.0 GET : https://f.mffb.com.cn/a/470130.html
  2. 运行时间 : 0.145701s [ 吞吐率:6.86req/s ] 内存消耗:4,413.95kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b460452788a41ed34d21f23a0a6d381d
  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.000570s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000821s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.009371s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002393s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000904s ]
  6. SELECT * FROM `set` [ RunTime:0.005027s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001049s ]
  8. SELECT * FROM `article` WHERE `id` = 470130 LIMIT 1 [ RunTime:0.006835s ]
  9. UPDATE `article` SET `lasttime` = 1770437771 WHERE `id` = 470130 [ RunTime:0.006338s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.005240s ]
  11. SELECT * FROM `article` WHERE `id` < 470130 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001777s ]
  12. SELECT * FROM `article` WHERE `id` > 470130 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001051s ]
  13. SELECT * FROM `article` WHERE `id` < 470130 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.008102s ]
  14. SELECT * FROM `article` WHERE `id` < 470130 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.015591s ]
  15. SELECT * FROM `article` WHERE `id` < 470130 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.010382s ]
0.147391s