首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
高性能编程基础:类、对象
高性能编程基础:进程与线程
多进程与多线程
高并发编程的挑战
高性能编程的挑战
Python线程安全性的实现
Python线程同步的实现
Python原子性的实现
CPython虚拟机
Python代码执行过程分析
Python代码执行性能优化原理
基于Pypy的Python代码执行性能优化原理
高并发与高性能之间的关系
从源码角度剖析Python对象的创建过程
Python对象的状态
Python对象的内存回收机制
Threading模块与高并发
Threading模块中常用方法和类的实现原理解析
Python线程的创建与使用
Python协程的基本概念
EventLoop的运作原理
Python中EventLoop的实现
深入理解Asyncio库
使用EventLoop和Asyncio库实现Python协程
Python线程阻塞现象及原因分析
为什么会出现Python线程竞争
如何保证Python线程顺序执行
线程间通信-单线程的等待
多线程之间的通信
Python线程死锁现象及原因分析
Python中如何实现锁
Python中主流的内置锁及其实现原理
Python中GIL与线程锁的区别和联系
公平锁与非公平锁
Python线程安全介绍
实现Python线程安全
什么是线程优先级
Python线程优先级的实现
线程同步与异步
Python中的线程同步实现
Python中的线程异步实现
Python中的原子变量与原子性操作
原子变量与原子性操作的实现原理
什么是线程池
Python线程池的实现方式
当前位置:
首页>>
技术小册>>
Python高并发编程与实战
小册名称:Python高并发编程与实战
### 1.4.1 多线程 多线程一般指通过技术手段在具体项目中开启两个或两个以上线程,以一起执行任务。在Python中也是如此,我们可以通过Python提供的线程相关的类库在Python项目中开启多线程,比如使用Threading库等方式,这一点会在本书的高并发篇进行详细介绍。通过开启两个或两个以上线程,计算机可以异步或并发执行Python任务。通过该技术手段,Python任务得到充分执行,可以使CPU可以充分地发挥作用,不再因为等待任务的执行而延长CPU等待执行任务的时间。 ### 1.4.2 多进程 多进程一般指通过技术手段,将同一个项目拆分成不同的进程来一起运行项目的现象。这种技术目前只有一些理论内容,并没有实际的产出,因为这种理论在正常情况下实现起来还是有一定难度的,所以本书不做过多介绍。 ### 1.4.3 单线程 单线程指的是项目自始至终只有一个线程负责执行任务。这种单线程执行任务的方式在比较简单的场景中比较适用,但是,一旦项目具备一定的业务逻辑或者有计算要求,再采用单线程的方式去处理任务就不是很合适了。 试想一下,一个线程正在执行一个比较耗时的计算任务,而后续代码需要这个计算任务的结果才能继续向下执行。此时,由于只有一个线程执行,所以不得不等待该线程执行完后才能继续执行后续的业务逻辑,这一等待过程会直接反映到用户层面,即用户在使用该项目时会感知到明显的等待时间,这会给用户带来不好的体验。 为了避免上述现象出现,我们不得不在项目中采用多线程的方式进行优化,但是,使用多线程来对项目进行优化就一定好吗? ### 1.4.4 多线程的优势与不足 任何事物都具有两面性,多线程亦是如此。在通过多线程来优化项目时,我们不得不反思使用多线程会不会给项目增加其他的负担。答案是一定会。 对于CPython虚拟机来说,多线程是通过切换线程上下文而实现的。而每一次线程上下文切换,都会带来一定的时间开销,都需要CPython虚拟机去等待执行,这也是使用多线程处理任务必须要花费的时间成本。 除了时间成本,在Python项目中将具体代码优化成线程安全的常用手段还是加锁,而一旦给代码解锁,就会带来线程间对于临界区资源的竞争,一旦存在资源的竞争,线程之间就会等待获取锁,从而获取线程所需的资源,这其中也需要一定的时间成本。如果开发者不懂如何给代码加锁,从而乱用各种锁,这对于代码本身就不是一件正常的事情,大概率也不会实现线程安全,只会让结果变得更糟。 综上所述,我们只有在具备一定的多线程应用能力之后,才能对Python代码进行优化,这样才能发挥多线程的优势。而实现多线程的每一种技术手段都需要读者潜心钻研、自我总结。
上一篇:
高性能编程基础:进程与线程
下一篇:
高并发编程的挑战
该分类下的相关小册推荐:
Python与办公-玩转Excel
Python编程轻松进阶(三)
Python合辑2-字符串常用方法
Python神经网络入门与实践
Python合辑10-函数
Python自动化办公实战
Python编程轻松进阶(一)
Python合辑12-面向对象
Python数据分析与挖掘实战(上)
Python合辑5-格式化字符串
Python爬虫入门与实战开发(下)
Python3网络爬虫开发实战(下)