Bootstrap

python 线程通信的几种方式_Python 线程、线程通信、多线程

这是一篇学习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,这个是线程安全的

;