这是一篇学习Python 线程相关的内容,记录一下以备复习和开发使用,技术有限,如有问题欢迎指出,多谢。
一.GIL 全局解释器锁(cpython)
1.为什么会有这个锁:为了线程安全,减少python使用者的上手难度
GIL 使得同一个时刻只有一个线程在一个cpu上执行字节码,无法隐射到多个cpu,多核上执行。
2.特殊情况下会释放GIL:达到特定字节码行数、到底特定数目时间片、IO操作(主动)
二:并发和并行的区别
并发:描述程序的组织结构,指程序要被设计成多个可独立执行的子任务
并行:描述程序的执行状态,指多任务需要同时执行
三:守护线程&线程阻塞
守护线程:thread.setDaemon(true),当主程序退出的时候让子程序也一并退出
子线程阻塞:thread.join(),当子程序都结束后主程序再退出
四:多线程的写法
实例化Threading,调用Threading的方法去进行多线程编程
写子类继承Theading,重写相应的方法
说明:当程序简单时可使用实例化方法,当程序较复杂的时候,实现逻辑较多,第二种方法。
五:线程间通信
1.共享变量:
方法简单,也可以写入到单独的py文件中。问题:线程不安全,易出问题。
2.queue 队列:
使用queue 的 Queue,这个是线程安全的