测试开发必备技能: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自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/531129.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python运行报错 ModuleNotFoundError: No module named ‘speech_recognition‘解决方法

写在前面 自己的测试环境&#xff1a; Ubuntu 20.04 一、问题描述 运行 python 程序时遇到如下问题&#xff1a; Traceback (most recent call last):File "mix.py", line 10, in <module>import speech_recognition as sr ModuleNotFoundError: No module…

羊大师分享:每日一杯羊奶,健康生活我有秘诀

今天&#xff0c;我要为大家揭开羊奶那神秘的面纱&#xff0c;分享为何它被我誉为“液体黄金”&#xff0c;以及如何正确饮用。 首先&#xff0c;让我们看看羊奶为何如此独特&#xff1a; 丰富的营养&#xff1a;羊奶含有高质量的蛋白质和必不可少的氨基酸&#xff0c;它们对…

免费在线SSL证书格式转换工具,轻松完成SSL证书格式转换

在互联网时代&#xff0c;网站安全问题备受关注&#xff0c;SSL证书作为确保网站安全的重要工具&#xff0c;会部署在服务器上来实现HTTPS确保传输数据安全。然而SSL证书有PEM、JKS、PKCS等多种格式&#xff0c;市面上有Apache、Nginx、Tomcat、Windows Server&#xff08;IIS&…

Jmeter的json提取器(包括提取一个参数的所有值,提取多个参数

jmeter的json提取器&#xff08;包括提取多个参数&#xff0c;提取一个参数的所有值&#xff09;https://www.cnblogs.com/jxial/p/15175314.html 在工作中经常遇到这种情况&#xff0c;就是下一个接口需要引用上一个接口返回的值&#xff0c;普遍的方法就是运用后置提取器 常…

项目文章| Plant CellDAP-seq解析草莓NAC转录因子FvRIF的调控网络

DAP-seq是一种体外研究蛋白与DNA结合的技术&#xff0c;该技术利用麦胚乳表达体系表达目标蛋白然后与基因组DNA文库体外孵育&#xff0c;得到目标蛋白的结合信息。与ChIP-seq和CUT&Tag不同&#xff0c;DAP-seq不需要抗体&#xff0c;在植物中应用更为广泛。今天我们分享一篇…

c++的STL(8) -- queue

queue容器概述 queue容器实现了实现了和队列相同结构的容器。 如图&#xff0c;队列这种结构有两端: 队首和队尾。 对于队列&#xff0c;我们添加数据只能从队尾添加&#xff0c;删除数据和获取数据只能从队首删除。是一种先进先出的结构。 -- 当然读取数据也只能从队首或者…

RuntimeError: Error(s) in loading state_dict for ZoeDepth解决方案

本文收录于《AI绘画从入门到精通》专栏,订阅后可阅读专栏内所有文章,专栏总目录:点这里。 大家好,我是水滴~~ 本文主要介绍在 Stable Diffusion WebUI 中使用 ControlNet 的 depth_zoe 预处理器时,出现的 RuntimeError: Error(s) in loading state_dict for ZoeDepth 异常…

【Leetcode每日一题】模拟 - 数青蛙(难度⭐⭐)(51)

1. 题目解析 题目链接&#xff1a;1419. 数青蛙 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 一、模拟青蛙叫声的基本逻辑 在模拟青蛙叫声的过程中&#xff0c;我们需要遵循一定的规则来判断何时青蛙会发出声音。…

MySQL 优化总结

目标知识 MySQL执行流程图 MySQL 优化成本路线图 优化成本&#xff1a;硬件>系统配置>数据库表结构>SQL及索引。优化效果&#xff1a;硬件<系统配置<数据库表结构<SQL及索引。 MySQL 五大优化原则 减少数据返回&#xff1a;设置合理字段数据类型、启用压缩…

通往 AGI 的道路上,OpenAI 逐渐构建了全模态的工具集

几天前&#xff0c;OpenAI 公司官宣将发布一个名为“Voice Engine”的小规模模型&#xff0c;引起巨大的声浪。 该模型支持仅使用文本输入和单个 15 秒音频样本来生成与原始说话者非常相似的自然语音。可应用于“语音转录”、“语音克隆”、“语音翻译”等场景。 笔者感叹 AI …

HarmonyOS 开发-MpChart运动健康场景实践案例

介绍 MpChart是一个包含各种类型图表的图表库&#xff0c;主要用于业务数据汇总&#xff0c;例如销售数据走势图&#xff0c;股价走势图等场景中使用&#xff0c;方便开发者快速实现图表UI&#xff0c;MpChart主要包括线形图、柱状图、饼状图、蜡烛图、气泡图、雷达图、瀑布图…

Golang-Gin 框架写的免杀平台,内置分离、捆绑等多种BypassAV方式

Golang-Gin 框架写的免杀平台&#xff0c;内置分离、捆绑等多种BypassAV方式 Golang-Gin 框架写的免杀平台&#xff0c;内置分离、捆绑等多种BypassAV方式。 cool 时间线&#xff1a; Golang Gin 框架写的免杀平台- (2021.11.12)Golang Gin 框架写的免杀平台&#xff0c;更…

分享|人力RPO项目是什么?算得上蓝海项目吗?

在当今竞争激烈的商业环境中&#xff0c;企业为了降低成本、提高效率&#xff0c;纷纷寻求创新的人力资源解决方案。其中&#xff0c;人力RPO(Recruitment Process Outsourcing&#xff0c;招聘流程外包)项目逐渐受到广泛关注。那么&#xff0c;人力RPO项目究竟是什么呢?它是否…

40-软件部署实战(上):部署方案及负载均衡、高可用组件介绍

40-软件部署实战&#xff08;上&#xff09;&#xff1a;部署方案及负载均衡、高可用组件介绍 。 系统缺少高可用、弹性扩容等能力&#xff0c;是很脆弱的&#xff0c;遇到流量波峰、发布变更很容易出问题。在系统真正上线前&#xff0c;我们需要重新调整部署架构&#xff0c;来…

成为嵌入式工程师以后才明白的道理

1. 刚开始&#xff0c;不要太在乎薪水20多岁的年纪&#xff0c;一人吃饱&#xff0c;全家不饿&#xff0c;太看重薪水&#xff0c;反而会错过很多机会&#xff0c;而且经验不足时&#xff0c;薪水相差也不大。在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一…

大数据相关组件安装及使用

自学大数据相关组件 持续更新中。。。 一、linux安装docker 1、更新yum sudo yum update2、卸载docker旧版本 sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine3、…

【文件IO】JavaIO详解

一.文件的相关概念 什么是文件? 文件是计算机中存储信息的基本单位。文件通常指的是存储在计算机或其他数字存储设备上的一段信息的集合&#xff0c;这些信息可以是文本、图片、音频、视频等不同格式的数据。 文件路径: 文件的路径可以分为两类 相对路径:先指定一个"当前…

批量把GBK文本编码换成UTF-8

因为工作团队协作原因,有的同事使用gbk,有的使用utf-8,不方便,于是商量便统一换成utf-8,但是项目文件太多,所以百度搜索于是有了用python脚本一键实现的方案,以下为步骤. 本人亲测可用!!!(只在win11上亲测可用) 以下代码只实现对.c和.h文件的编码转换 1.电脑安装python脚本: …

css文字颜色渐变

background: linear-gradient(to top, #C3F8B3, #66FFFF);-webkit-background-clip: text;-webkit-text-fill-color: transparent; 效果

户外骑行存档(图新地球与运动健康App)经验分享

0序 之前天天加班熬夜&#xff0c;身体素质有些下降&#xff0c;在锻炼的过程中喜欢上了骑行&#xff0c;周周骑、天天骑。 骑行会产生很多的轨迹&#xff08;有很多朋友不喜欢装很多app&#xff0c;就用手机自带的运动健康&#xff0c;也有喜欢专业运动app的&#xff0c;道理…