线程概念
1、什么是线程 (thread)
线程也是一种多任务编程方式,可以使用计算机的多核资源。线程被称为轻量级的进程。
2、线程特征:
【1】一个进程可以包含多个线程
【2】线程是计算机内核使用的最小单位
【3】线程也是一个运行过程,也要消耗计算机资源
【4】多个线程共享共用进程的资源
【5】线程也有自己的特征属性,TID 指令集,线程栈
【6】多个线程之间独立运行互不干扰
【7】线程的创建删除消耗的资源要小于进程
3、线程的标准库模块
threading
4、线程通信
【1】通信方法 : 多个线程共用进程空间,所以进程的全局变量对进程内线程均可见。
所以线程往往使用全局变量进行通信
https://www.cnblogs.com/longyuu/p/14261712.html
【2】注意事项 : 线程间使用全局变量进行通信,全局变量为共享资源,往往需要同步互斥机制
5、线程的同步互斥
【同步】事件Event
https://www.cnblogs.com/longyuu/p/14261694.html
【互斥】线程锁 Lock
https://www.cnblogs.com/longyuu/p/14261726.html
GIL---->全局解释器锁
python ---> 支持线程操作 --->IO的同步和互斥 --> 加锁 ----> 超级锁,给解释器加锁
后果 : 一个解释器,同一时刻只解释一个线程,此时其他线程需要等待。大大降低了python线程的执行效率
7、python GIL问题解决方案
【1】修改c解释器
【2】尽量使用多进程进行并行操作
【3】python线程可以用在高延迟多阻塞的IO情形
【4】不使用cpython c# java做解释器