python中线程和进程有何区别


Posted in Python onJune 17, 2020

引入进程和线程的概念及区别

threading模块提供的类:  

Thread, Lock, Rlock, Condition, [Bounded]Semaphore, Event, Timer, local。

1.什么是进程

计算机程序只不过是磁盘中可执行的二进制(或其他类型)的数据。它们只有在被读取到内存中,被操作系统调用的时候才开始它们的生命期。

进程(有时被称为重量级进程)是程序的一次执行。每个进程都有自己的地址空间、内存、数据栈及其它记录其运行轨迹的辅助数据。

操作系统管理在其上运行的所有进程,并为这些进程公平的分配时间,进程也可以通过fork和spawn操作来完成其它的任务。

不过各个进程有自己的内存空间、数据栈等,所以只能使用进程间通讯,而不能直接共享信息。

2.线程的基本概念

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

 3、线程和进程的关系以及区别?

进程和线程的关系:

(1)一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。

(2)资源分配给进程,同一进程的所有线程共享该进程的所有资源。

(3)处理机分给线程,即真正在处理机上运行的是线程

(4)线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。线程是指进程内的一个执行单元,也是进程内的可调度实体.

进程与线程的区别:

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

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

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

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

知识点补充:

  • 进程是资源分配的单位
  • 线程是操作系统调度的单位
  • 协程,又称微线程,纤程,协程的切换只是单纯的操作CPU的上下文,资源很小,效率高
  • 进程切换需要的资源很最大,效率很低
  • 一个程序至少有一个进程,一个进程至少有一个线程
  • 线程执行开销小,但不利于资源的管理和保护;而进程正相反

到此这篇关于python中线程和进程有何区别的文章就介绍到这了,更多相关python中线程和进程的区别内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Django发送html邮件的方法
May 26 Python
python中print的不换行即时输出的快速解决方法
Jul 20 Python
如何在Python函数执行前后增加额外的行为
Oct 20 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
pandas数据框,统计某列数据对应的个数方法
Apr 11 Python
Python实现随机生成手机号及正则验证手机号的方法
Apr 25 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
Python中Numpy ndarray的使用详解
May 24 Python
python实现在多维数组中挑选符合条件的全部元素
Nov 26 Python
Python 中由 yield 实现异步操作
May 04 Python
Python把图片转化为pdf代码实例
Jul 28 Python
Python爬虫基于lxml解决数据编码乱码问题
Jul 31 Python
使用Keras中的ImageDataGenerator进行批次读图方式
Jun 17 #Python
python里的单引号和双引号的有什么作用
Jun 17 #Python
没编程基础可以学python吗
Jun 17 #Python
keras实现图像预处理并生成一个generator的案例
Jun 17 #Python
pytorch快速搭建神经网络_Sequential操作
Jun 17 #Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 #Python
Keras之fit_generator与train_on_batch用法
Jun 17 #Python
You might like
PHP开发负载均衡指南
2010/07/17 PHP
PHP使用PHPexcel导入导出数据的方法
2015/11/14 PHP
php socket通信(tcp/udp)实例分析
2016/02/14 PHP
php禁用函数设置及查看方法详解
2016/07/25 PHP
jquery 插件学习(三)
2012/08/06 Javascript
javaScript矢量图表库-gRaphael几行代码实现精美的条形图/饼图/点图/曲线图
2013/01/09 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
什么是MEAN?JavaScript编程中的MEAN是什么意思?
2014/12/18 Javascript
深入理解JavaScript系列(42):设计模式之原型模式详解
2015/03/04 Javascript
实例讲解JS中setTimeout()的用法
2016/01/28 Javascript
JavaScript学习笔记之创建对象
2016/03/25 Javascript
基于HTML模板和JSON数据的JavaScript交互(移动端)
2016/04/06 Javascript
JavaScript+Java实现HTML页面转为PDF文件保存的方法
2016/05/30 Javascript
清除输入框内的空格
2016/12/21 Javascript
bootstrap datetimepicker日期插件超详细使用方法介绍
2017/02/23 Javascript
基于react框架使用的一些细节要点的思考
2017/05/31 Javascript
详解Angular系列之变化检测(Change Detection)
2018/02/26 Javascript
Node.js创建HTTP文件服务器的使用示例
2018/05/11 Javascript
vue2.0父子组件间传递数据的方法
2018/08/16 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
[02:37]TI8勇士令状不朽珍藏II视频展示
2018/06/23 DOTA
python基础教程之数字处理(math)模块详解
2014/03/25 Python
Python可变参数函数用法实例
2015/07/07 Python
Python3 replace()函数使用方法
2018/03/19 Python
python 如何对logging日志封装
2020/12/02 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
利用Bootstrap实现漂亮简洁的CSS3价格表实例源码
2017/03/02 HTML / CSS
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
应届生简历中的自我评价
2014/01/13 职场文书
幼儿教师培训感言
2014/03/08 职场文书
德语专业求职信
2014/03/12 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
新手初学Java网络编程
2021/07/07 Java/Android
详解OpenCV曝光融合
2022/04/29 Python