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

什么是进程

  • 进程是执行中的程序

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

  • 操作系统统一管理

  • 派生(fork或spawn)新进程

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

什么是线程

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

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

  • 多线程并发执行

  • 需要同步原语

python与线程

  • 解释器主循环

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

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

GIL保证一个线程

  • 设置GIL

  • 切换进一个线程去运行

  • 执行下面的操作之一

    指定数量的字节码指令

    线程主动让出控制权

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

  • 解锁GIL

  • 重复上述步骤

两种线程管理

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

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

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

      支持同步机制

      支持守护线程

_thread模块

图片

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

使用_thread模块案例1

代码:

图片

运行结果:

图片

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


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

图片

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

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

代码:

图片

图片

运行结果:

图片

threading模块

图片

使用threading模块案例

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

代码:

图片

图片

运行结果:

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

图片

Thread类

图片

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

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

代码:

图片

图片

运行结果:

图片

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:程序员小濠 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值