区分python中的进程与线程


Posted in Python onAugust 13, 2020

今天整理的文章是给大家梳理Python的进程与线程的区别,没什么代码,希望大家能清楚知道他们的区别,什么情况用线程,什么情况用进程做到心中有数,希望大家能熟练掌握.

进程的基本概念

概念

进程就是一个程序在一个数据集上的一次动态执行过程。进程一般由程序、数据集、进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。

线程的基本概念

概念

线程是进程中执行运算的最小单位,是进程中的一个实体,是被系统独立调度和分派的基本单位,线程自己不拥有系统资源,只拥有一点在运行中必不可少的资源,但它可与同属一个进程的其它线程共享进程所拥有的全部资源。一个线程可以创建和撤消另一个线程,同一进程中的多个线程之间可以并发执行。

好处

  • 易于调度。
  • 提高并发性,通过线程可方便有效地实现并发性。进程可创建多个线程来执行同一程序的不同部分。
  • 开销少,创建线程比创建进程要快,所需开销很少

进程的基本状态及状态之间的关系

状态:运行、阻塞、挂起阻塞、就绪、挂起就绪

状态之间的转换:

  1. 准备就绪的进程,被CPU调度执行,变成运行态;
  2. 运行中的进程,进行I/O请求或者不能得到所请求的资源,变成阻塞态;
  3. 运行中的进程,进程执行完毕(或时间片已到),变成就绪态;
  4. 将阻塞态的进程挂起,变成挂起阻塞态,当导致进程阻塞的I/O操作在用户重启进程前完成(称之为唤醒),挂起阻塞态变成挂起就绪态,当用户在I/O操作结束之前重启进程,挂起阻塞态变成阻塞态;
  5. 将就绪(或运行)中的进程挂起,变成挂起就绪态,当该进程恢复之后,挂起就绪态变成就绪态;

进程和线程的关系:

  • 一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。
  • 资源分配给进程,同一进程的所有线程共享该进程的所有资源。
  • 处理机分给线程,即真正在处理机上运行的是线程
  • 线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度实体.

进程与线程的区别:

  • 运行方式不同

进程不能单独执行,它只是资源的集合。
进程要操作CPU,必须要先创建一个线程。
所有在同一个进程里的线程,是同享同一块进程所占的内存空间。

  • 关系

进程中第一个线程是主线程,主线程可以创建其他线程;其他线程也可以创建线程;线程之间是平等的。
进程有父进程和子进程,独立的内存空间,唯一的标识符:pid。

  • 速度

启动线程比启动进程快
运行线程和运行进程速度上是一样的,没有可比性
线程共享内存空间,进程的内存是独立的。

  • 创建

父进程生成子进程,相当于复制一份内存空间,进程之间不能直接访问
创建新线程很简单,创建新进程需要对父进程进行一次复制
一个线程可以控制和操作同级线程里的其他线程,但是进程只能操作子进程。

  • 交互

同一个进程里的线程之间可以直接访问。
两个进程想通信必须通过一个中间代理来实现。

  • 调度

线程作为调度和分配的基本单位,进程作为拥有资源的基本单位

  • 并发性

不仅进程之间可以并发执行,同一个进程的多个线程之间也可并发执行

  • 拥有资源:

进程是拥有资源的一个独立单位,线程不拥有系统资源,但可以访问隶属于进程的资源.

  • 系统开销:

在创建或撤消进程时,由于系统都要为之分配和回收资源,导致系统的开销明显大于创建或撤消线程时的开销。

以上就是区分python中的进程与线程的详细内容,更多关于python进程与线程的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python迭代器和生成器介绍
Mar 06 Python
wxpython中Textctrl回车事件无效的解决方法
Jul 21 Python
python实现图片处理和特征提取详解
Nov 13 Python
Tensorflow使用tfrecord输入数据格式
Jun 19 Python
pandas值替换方法
Jul 10 Python
Python3随机漫步生成数据并绘制
Aug 27 Python
python调用百度语音REST API
Aug 30 Python
python 寻找离散序列极值点的方法
Jul 10 Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 Python
Python爬虫实现vip电影下载的示例代码
Apr 20 Python
pandas 数据类型转换的实现
Dec 29 Python
PYTHON InceptionV3模型的复现详解
May 06 Python
python判断一个变量是否已经设置的方法
Aug 13 #Python
vscode+PyQt5安装详解步骤
Aug 12 #Python
python使用列表的最佳方案
Aug 12 #Python
Python实现播放和录制声音的功能
Aug 12 #Python
Python实现文件压缩和解压的示例代码
Aug 12 #Python
Python爬取数据并实现可视化代码解析
Aug 12 #Python
Python下载网易云歌单歌曲的示例代码
Aug 12 #Python
You might like
php 需要掌握的东西 不做浮躁的人
2009/12/28 PHP
PHP similar_text 字符串的相似性比较函数
2010/05/26 PHP
JS中简单的实现像C#中using功能(有源码下载)
2007/01/09 Javascript
跟着JQuery API学Jquery 之三 筛选
2010/04/09 Javascript
function foo的原型与prototype属性解惑
2010/11/19 Javascript
使用Jquery搭建最佳用户体验的登录页面之记住密码自动登录功能(含后台代码)
2011/07/10 Javascript
js滚动条回到顶部的代码
2011/12/06 Javascript
js 单击式的下拉菜单效果实例
2013/08/13 Javascript
JavaScript函数详解
2014/11/17 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
招聘网站基于jQuery实现自动刷新简历
2015/05/10 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
使用Javascript简单计算器
2018/11/17 Javascript
js实现移动端吸顶效果
2020/01/08 Javascript
如何通过JS实现转码与解码
2020/02/21 Javascript
[59:44]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 paiN vs iG
2018/03/31 DOTA
[01:09:01]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第一场 10.28
2020/10/28 DOTA
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
windows下python安装paramiko模块和pycrypto模块(简单三步)
2017/07/06 Python
python 判断是否为正小数和正整数的实例
2017/07/23 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
Python实现中值滤波去噪方式
2019/12/18 Python
pytorch 状态字典:state_dict使用详解
2020/01/17 Python
python实现扫雷游戏的示例
2020/10/20 Python
HTML5 虚拟键盘出现挡住输入框的解决办法
2017/02/14 HTML / CSS
Smallable英国家庭概念店:设计师童装及家居装饰
2017/07/05 全球购物
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
物流专业大学的自我评价
2014/01/11 职场文书
《去年的树》教学反思
2014/04/11 职场文书
优秀共产党员先进事迹材料
2014/05/06 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
投资公司董事长岗位职责
2015/04/16 职场文书
jquery插件实现悬浮的菜单
2021/04/24 jQuery
Redis的字符串是如何实现的
2021/10/24 Redis
CSS三大特性继承性、层叠性和优先级详解
2022/01/18 HTML / CSS