python处理并发导读与目录

        在阅读Python处理并发的系列文章前,正确区分 进程/线程、并行/并发、阻塞/非阻塞、同步/异步 概念非常重要,是学习本部分内容的基础,也是面试中经常会被问到的内容。

一. 概念区分

1.1 进程和线程

        一个正在运行的程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。其中,线程是操作系统分配处理器时间片的最小单位。进程间是相互独立的,一个进程无法访问另一个进程的数据,一个进程的失败也不影响其他进程的运行;进程间通信需要依赖管道、队列、信号量等技术。

        线程是进程中的基本执行单元,是操作系统分配CPU时间的基本单位,一个进程可以包含多个线程,多个线程共享主线程的资源,在进程开始执行的第一个线程被视为主线程。

        进程和线程在使用时需要注意的地方:

  • python多线程适合做io密集型程序,因为当一个线程遇到I/O操作时,将释放GIL(全局解释器锁),因此效率更高。如果是计算密集型程序,python中单线程因为没有线程切换的延时,效率将高于多线程。
  • 对于计算密集型程序,一般使用多进程,多进程可以发挥多核cpu。计算密集型程序来说,多进程效率 > 单线程 > 多线程。
  • GIL在较长一段时间内将会继续存在,但是会不断对其进行改进;不过可以使用multiprocessing替代Thread,或者使用协程,协程适合IO密集型,只用单核。
  • IO密集型:涉及到网络、磁盘IO的任务都是IO密集型任务,这类任务的特点是CPU消耗很少,任务的大部分时间都在
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值