笔记 Python--线程 锁 Queue

以下是个人见解,总结笔记。

线程

  1. 一颗CPU核心通常只有一个线程,使用超线程技术的InterCPU除外。
  2. Inter的超线程技术可以把一个CPU物理内核模拟成两个虚拟内核(两线程),所以一个物理内核可以有两个线程并行,两个线程共享CPU资源,当两个线程同时需要使用某一资源时,其中一个需要让步。
  3. 一颗CPU核心可以开启多个线程,但在任意时刻只有一个线程在执行,当线程停止使用资源时切换其它线程执行,多线程就是多个线程切换执行以提高CPU利用率,达到加快程序执行的效果。
  4. 多线程更适合用于I/O密集型程序。
  5. Python虚拟机使用全局解释器锁(GIL)来保证任意时刻只有一个线程运行。

摘自《Python核心编程》的解释 一般在多线程代码中,总会有一些特定的函数或代码块不希望(或不应该)被多个线程同时执行,通常包括修改数据库、更新文件或其他或产生竞态条件的类似情况。这就是需要使用同步的情况。当任意数量的线程可以访问临界区的代码但在给定时刻只有一个线程可以通过时,就是使用同步的时候。程序员使用适合的同步原语,或者线程控制机制来执行同步。

锁是Python的同步原语之一,当需要同步的时候不执行同步,会出现输入输出或数据结构改变的混乱,I/O和访问相同数据结构都属于临界区,因此需要用锁来防止多个线程同时进入临界区,也就是说要保证任意时刻只有一个线程执行I/O和修改数据。

Queue

队列是一种对待处理任务的机制,遵循先进先出的原则。可用于线程间共享数据。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值