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 相关文章推荐
centos下更新Python版本的步骤
Feb 12 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
Python中%r和%s的详解及区别
Mar 16 Python
利用numpy和pandas处理csv文件中的时间方法
Apr 19 Python
Python3.4 tkinter,PIL图片转换
Jun 21 Python
pandas的唯一值、值计数以及成员资格的示例
Jul 25 Python
python 函数的缺省参数使用注意事项分析
Sep 17 Python
python爬虫开发之使用python爬虫库requests,urllib与今日头条搜索功能爬取搜索内容实例
Mar 10 Python
keras 获取某层输出 获取复用层的多次输出实例
May 23 Python
Python grpc超时机制代码示例
Sep 14 Python
如何向scrapy中的spider传递参数的几种方法
Nov 18 Python
详解pandas中利用DataFrame对象的.loc[]、.iloc[]方法抽取数据
Dec 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
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
PHP获取客户端真实IP地址的5种情况分析和实现代码
2014/07/08 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
MyEclipse常用配置图文教程
2014/09/11 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
浅谈PHP无限极分类原理
2019/03/14 PHP
PHP实现通过二维数组键值获取一维键名操作示例
2019/10/11 PHP
浅析PHP反序列化中过滤函数使用不当导致的对象注入问题
2020/02/15 PHP
JavaScript开发时的五个注意事项
2007/12/08 Javascript
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
jquery jqPlot API 中文使用教程(非常强大的图表工具)
2011/08/15 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
初识Javascript小结
2015/07/16 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
jQuery EasyUI常用数据验证汇总
2016/09/18 Javascript
js 提交form表单和设置form表单请求路径的实现方法
2016/10/25 Javascript
AngularJS监听路由变化的方法
2017/03/07 Javascript
Webpack 服务器端代码打包的示例代码
2017/09/19 Javascript
使用webpack打包koa2 框架app
2018/02/02 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
vue3.0中的双向数据绑定方法及优缺点
2019/08/01 Javascript
JavaScript RegExp 对象用法详解
2019/09/24 Javascript
详解vue-router的Import异步加载模块问题的解决方案
2020/05/13 Javascript
VSCode 配置uni-app的方法
2020/07/11 Javascript
JavaScript实现瀑布流布局的3种方式
2020/12/27 Javascript
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
python gensim使用word2vec词向量处理中文语料的方法
2019/07/05 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
基于Pytorch SSD模型分析
2020/02/18 Python
Python requests模块cookie实例解析
2020/04/14 Python
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
2014年平安夜寄语
2014/12/08 职场文书
高一地理教学工作总结
2015/08/12 职场文书
Python中seaborn库之countplot的数据可视化使用
2021/06/11 Python
python面向对象版学生信息管理系统
2021/06/24 Python