Python 多线程 进程与线程相关概念 (一)
2024-08-25 08:10:26
0x00 并行和并发
并行:同时做某些事,可以互不干扰的同一时刻做几件事。
并发:也是同时做某些事,但是强调,同一时刻做了几件事。
0x01 并发的解决:
1)队列、缓冲区:
排队就是队列,先进先出。排队是一种解决并发的方法。
排成的队列,其实就是一个缓冲地带,就是缓冲区。
2)优先队列:
在到达队列时优先处理,就是优先队列。
3)争抢:
资源被一个线程占据后,就会锁定资源,其它线程就需要等该线程释放资源再进程争抢。这是一种锁机制。
4)预处理:
提前加载线程需要的数据,缓存场景常用。
5)垂直扩展:
比如一台服务器无法快速处理高并发业务时,可以提升该服务器的内存、增加CPU性能和CPU数,这就是垂直扩展。
6)水平扩展:
也可以叫横向扩展,当一台服务器无法满足业务时,就增加服务器数量、带宽,这就是水平扩展。
7)消息中间件:
使用消息队列,比如RabbitMQ、ActiveMQ、RocketMQ、kafka等。这会涉及到生产者与消费者模型,后一篇文章会详细介绍。
0x02 进程和线程
线程,是操作系统能够进行调度的最小单位,每个进程至少有一个线程,同一个进程内的线程可以共享进程的资源,每一个线程拥有自己独立的堆栈。
进程,是系统进行资源分配和调度的基本单位,是一个或多个线程的集合,在操作系统中,每个进程在内存中相对独立的,进程间不可以随便的共享数据。
0x03 线程的状态:
就绪Ready:
线程能够运行,但在等待被调度。可能线程刚刚创建启动,或刚刚从阻塞中恢复,或者被其它线程抢占.
运行Running:
线程正在运行
阻塞Blocked:
线程等待外部事件发生而无法运行,如I/O操作.
终止Terminated
线程完成,或退出,或被取消.
最新文章
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q147-Q151)
- # 关于Apache的25个初中级面试题
- USACO1.2Milking Cows
- android读取data下得数据
- Spark系列(五)Master主备切换机制
- (转)MSMQ(消息队列)
- ORA-16018: cannot use LOG_ARCHIVE_DEST with LOG_ARCHIVE_DEST_n or DB_RECOVERY_FILE_DEST【error收集】
- iphone开发之适配iphone5
- Song of Pi
- 【POJ 3279 Fliptile】开关问题,模拟
- hdu 1242 Rescue_bfs+优先队列
- 批处理命令行CMD启动停止重启IIS的命令
- 英特尔:不再公布PC处理器多核睿频数据
- 关于celery django django-celery版的搭配的报错问题及解决方法
- Swift基础之:新的访问控制fileprivate和open
- jQuery鼠标移入移出(冒泡版和无冒泡版)
- robotframework中的用evaluate关键字进行运算(随机数+转换+运算)
- Educational Codeforces Round 53 (Rated for Div. 2) A Diverse Substring
- Jquery 获取radio选中值
- Win10子系统Ubuntu安装llvm+clang
热门文章
- HTML中字体的垂直排列
- MySQL之单表查询练习
- Jquery获取radio选中的值
- SQLServer数据库系统概念
- meta name id class 标签的区别
- 如何用Fireworks制作经典的扫光字GIF动画
- SQL-OVER与四种排名函数:ROW_NUMBER(),RANK(),DENSE_RANK(),NTILE()
- ArcGIS10.x Engine直连提示连接超时ORA-12170 来自:http://www.iarcgis.com/?p=1004
- numpy数组属性查看及断言
- Angular1.x 之Providers (Value, Factory, Service and Constant )