python多线程

一、进程

1、什么是进程

  • 进程是执行中的程序
  • 拥有独立地址空间、内存、数据栈等
  • 操作系统管理
  • 派生(fork或spawn)新进程
  • 进程间通信(IPC)方式共享信息

2、什么是线程

  • 同进程下执行,并共享相同的上下文
  • 线程间的信息共享和通信更加容易
  • 多线程并发执行
  • 需要同步原语

3、python与线程

  • 解释器主循环
  • 主循环中只有一个控制线程在执行
  • 使用全局解释器锁(GIL)

4、GIL保证一个线程

  • 设置GIL
  • 切换进一个线程去运行
  • 执行下面操作之一
指定数据的字节码指令
线程主动让出控制权
  • 把线程设置回睡眠状态(切换出线程)
  • 解锁GIL
  • 重复上诉步骤

5、两种线程管理

  • _thread:提供了基本的线程和锁
  • threading:提供了更高级别、功能更全面的线程管理,支持同步机制,支持守护线程
_thread
函数/方法 描述
thread模块的函数
start_new_thread(function,args,kwargs=None) 派生一个新的线程,使用给定的args和可选的kwargs来执行function
allocate_lock() 分配LockType锁对象
exit() 给线程退出指令
LockType锁对象的方法
acquire(wait=None) 尝试获取锁对象
locked() 如果获取了锁对象则返回True,否则,返回False
release() 释放锁
threading
对象 描述
Thread 表示一个执行线程的对象
Lock 锁原语对象(和thread模块中锁一样)
RLock 可重入锁对象,使单一线程可以(再次)获得已持有的锁(递归锁)
Condition 条件变量对象,使得一个线程等待另一个线程满足特定的‘条件’,比如改变状态或某个数据值
Event 条件变量的通用版本,任意数量的线程等待某个事件的发生,在该事件发生后所有线程将被激活
Semaphore 为线程间共享的有限资源提供了一个‘计数器’,如果没有可用资源时会被阻塞
BoundedSemaphore 与Semaphore相似,不过它不允许超过初始值
Timer 与Thread相似,不过它要在运行等到一段时间
Barrier 创建一个‘障碍’,必须达到指定数量的线程后才可以继续
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 为什么要学习多线程 同一时间做了很多事情。 使用场景 1,快速高效的爬虫程序一个爬虫同时解析连接、爬取文字、爬取图...
    乱弹琴给阅读 669评论 0 0
  • 进程和线程 进程(Process)是计算机中的程序关于数据集合上的一次活动,是系统进行资源分配和调度的基本单位。简...
    小奚有话说阅读 1,316评论 0 1
  • 多线程编程技术可以实现代码并行,优化处理能力,同时可以将代码划分为功能更小的模块,使代码的可重用性更好。这里将介绍...
    泷汰泱阅读 326评论 0 0
  • 1.线程的基本概念 1.1 线程 线程是应用程序最小的执行单元,线程与进程类似,进程可以看做程序的一次执行,而线程...
    XYZeroing阅读 1,046评论 1 16
  • 多线程基础概念 并行与并发 并行:同时处理多个任务,必须在多核环境下 一段时间内同时处理多个任务,单核也可以并发 ...
    职场亮哥阅读 688评论 0 0

友情链接更多精彩内容