news 2026/4/24 21:33:26

测试开发必备技能:Python多线程处理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
测试开发必备技能:Python多线程处理

什么是进程

  • 进程是执行中的程序

  • 拥有独立地址空间,内存,数据栈等

  • 操作系统统一管理

  • 派生(fork或spawn)新进程

  • 进程间通信(IPC)方式共享信息

什么是线程

  • 同进程下执行,并共享相同的上下文

  • 线程间的信息共享和通信更加容易

  • 多线程并发执行

  • 需要同步原语

python与线程

  • 解释器主循环

  • 主循环中只有一个控制线程在执行

  • 使用全局解释器锁(GIL)

GIL保证一个线程

  • 设置GIL

  • 切换进一个线程去运行

  • 执行下面的操作之一

    指定数量的字节码指令

    线程主动让出控制权

  • 把线程设置回睡眠状态(切换出线程)

  • 解锁GIL

  • 重复上述步骤

两种线程管理

Python提供了两种线程管理模式。

  • _thread:提供了基本的线程和锁。

  • threading:提供了更高级别,功能更全的线程管理。threading底层使用了_thread。

支持同步机制

支持守护线程

_thread模块

使用_thread模块案例1

代码:

运行结果:

注意:这里主方法中必须加上time.sleep(6),否则主进程退出后,所有子进程都将强行退出,所有子线程将不被执行。这里也该模块的缺点之一,因为它没有守护线程的概念。


以下结果是不加time.sleep(6)的效果。

使用_thread模块案例2-利用锁

上述案例中其实存在缺点。在实际应用中,我们并不确定主线程需要等待子线程几秒钟,子线程才能结束。所以本案例加入锁,可以有效的解决这一问题。

代码:

运行结果:

threading模块

使用threading模块案例

threading自带锁,可以更有效解决上述案例【使用_thread模块案例2-利用锁】的问题。

代码:

运行结果:

注意:loop 0 和loop 1的执行先后顺序不是一定的。

Thread类

使用threading模块案例-重写threading.Thread

我们可以继续改进上述案例【使用threading模块案例】,使得代码更加符合面向对象编程的思想。

代码:

运行结果:

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:14:15

LabVIEW视觉教程:模板匹配、找边与抓圆那些事儿

labview视觉教程,模板匹配,找边,抓圆 在LabVIEW的视觉领域中,模板匹配、找边以及抓圆是非常实用且有趣的功能。今天咱就来唠唠这些神奇的操作。 模板匹配 模板匹配在图像识别里是个基础又关键的技术。简单来说,就是…

作者头像 李华
网站建设 2026/4/23 12:37:51

亲测好用8个AI论文工具,继续教育学生轻松搞定论文!

亲测好用8个AI论文工具,继续教育学生轻松搞定论文! AI 工具助力论文写作,让学术之路更轻松 在当前的继续教育环境中,论文写作已成为许多学生和科研工作者必须面对的重要任务。随着人工智能技术的不断发展,AI 工具在降低…

作者头像 李华
网站建设 2026/4/23 16:05:57

探索国产 224XP IE 带网络方案:功能升级与技术亮点

国产224XP IE带网络方案,在224XP功能基础上增加了网功能,多级运放设计,模拟量稳定不跳动,全兼容版本。最近在研究自动化控制相关技术时,发现了一款很有意思的产品——国产 224XP IE 带网络方案。这玩意儿可不简单&…

作者头像 李华
网站建设 2026/4/23 3:30:18

量子开发崛起:软件工程师必学的3个入门技能

量子时代的测试新挑战 量子计算正从实验室走向产业化,IBM和Google等公司已实现超千量子比特系统,为软件开发奠定硬件基础。对软件测试从业者而言,量子软件的特性(如叠加态和纠缠)带来了前所未有的测试难题&#xff1a…

作者头像 李华
网站建设 2026/4/23 12:46:55

昇腾芯片模型性能优化深度指南

一、昇腾芯片架构特性理解 1.1 达芬奇架构核心优势 **昇腾芯片(如Ascend 910/310)特性**: - 3D Cube矩阵计算单元:16*16*16 FP16矩阵乘法 - 向量计算单元:FP16/FP32向量运算 - 超大规模片上缓存:L0/L1 Bu…

作者头像 李华
网站建设 2026/4/23 20:48:46

类似谷歌搜索文献:高效文献检索与获取方案探讨

做科研的第一道坎,往往不是做实验,也不是写论文,而是——找文献。 很多新手科研小白会陷入一个怪圈:在知网、Google Scholar 上不断换关键词,结果要么信息过载,要么完全抓不到重点。今天分享几个长期使用的…

作者头像 李华