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 相关文章推荐
python连接mysql并提交mysql事务示例
Mar 05 Python
简单使用Python自动生成文章
Dec 25 Python
Golang与python线程详解及简单实例
Apr 27 Python
django rest framework之请求与响应(详解)
Nov 06 Python
Python字符串格式化%s%d%f详解
Feb 02 Python
opencv实现静态手势识别 opencv实现剪刀石头布游戏
Jan 22 Python
Python中list循环遍历删除数据的正确方法
Sep 02 Python
python多线程案例之多任务copy文件完整实例
Oct 29 Python
Python日志syslog使用原理详解
Feb 18 Python
Django通过json格式收集主机信息
May 29 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
Python万能模板案例之matplotlib绘制甘特图
Apr 13 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
实用函数7
2007/11/08 PHP
apache mysql php 源码编译使用方法
2012/05/03 PHP
php关联数组快速排序的方法
2015/04/17 PHP
PHP 二维数组和三维数组的过滤
2016/03/16 PHP
php实现二叉树中和为某一值的路径方法
2018/10/14 PHP
Laravel框架实现调用百度翻译API功能示例
2019/05/30 PHP
javascript中巧用“闭包”实现程序的暂停执行功能
2007/04/04 Javascript
javascript比较文档位置
2008/04/08 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
JS随机生成不重复数据的实例方法
2013/07/17 Javascript
浅析offsetLeft,Left,clientLeft之间的区别
2013/11/30 Javascript
php的文件上传入门教程(实例讲解)
2014/04/10 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
图片加载完成再执行事件的实例
2017/11/16 Javascript
Angular4自制一个市县二级联动组件示例
2017/11/21 Javascript
Vue.js devtool插件安装后无法使用的解决办法
2017/11/27 Javascript
解决VUE框架 导致绑定事件的阻止冒泡失效问题
2018/02/24 Javascript
vue项目接口管理,所有接口都在apis文件夹中统一管理操作
2020/08/13 Javascript
python发送邮件接收邮件示例分享
2014/01/21 Python
实例讲解Python中的私有属性
2014/08/21 Python
Python金融数据可视化汇总
2017/11/17 Python
简单实现python收发邮件功能
2018/01/05 Python
Python批量合并有合并单元格的Excel文件详解
2018/04/05 Python
pandas 数据实现行间计算的方法
2018/06/08 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
大学生职业生涯规划书模板
2014/01/03 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
小学校园之星事迹材料
2014/05/16 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB
python+pytest接口自动化之token关联登录的实现
2022/04/06 Python
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL