什么是进程
-
进程是执行中的程序
-
拥有独立地址空间,内存,数据栈等
-
操作系统统一管理
-
派生(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自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!