python网络编程--进程线程
一:什么是进程
一个程序执行时的实例被称为一个进程。
每个进程都提供执行程序所需的资源。一个进程有一个虚拟地址空间、可执行代码、对系统对象的开放句柄、一个安全上下文、一个独特的进程标识符、环境变量、一个优先级类、最小和最大工作集大小,以及至少一个执行线程。每个进程以一个线程开始,通常称为主线程,但可以从它的任何线程创建额外的线程。
程序并不能单独运行,只有将程序装载到内存中,系统为它分配资源才能运行,而这种执行的程序就称之为进程。程序和进程的区别就在于:程序是指令的集合,它是进程运行的静态描述文本;进程是程序的一次执行活动,属于动态概念。
二:有了进程为什么还要线程?
进程有很多优点,它提供了多道编程,让我们感觉我们每个人都拥有自己的CPU和其他资源,可以提高计算机的利用率。很多人就不理解了,既然进程这么优秀,为什么还要线程呢?其实,仔细观察就会发现进程还是有很多缺陷的,主要体现在两点上:
进程只能在一个时间干一件事,如果想同时干两件事或多件事,进程就无能为力了。
进程在执行的过程中如果阻塞,例如等待输入,整个进程就会挂起,即使进程中有些工作不依赖于输入的数据,也将无法执行。
一个操作系统就像是一个工厂,工厂里面有很多个生产车间,不同的车间生产不同的产品,每个车间就相当于一个进程,且你的工厂又穷,供电不足,同一时间只能给一个车间供电,为了能让所有车间都能同时生产,你的工厂的电工只能给不同的车间分时供电,但是轮到你的qq车间时,发现只有一个干活的工人,结果生产效率极低,为了解决这个问题,应该怎么办呢?。。。。没错,你肯定想到了,就是多加几个工人,让几个人工人并行工作,这每个工人,就是线程。
三:什么是线程
线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务
线程是执行上下文,它是CPU执行指令流所需的全部信息。
假设你正在读一本书,现在你想休息一下,但你希望能够回来,从你停下来的确切地点恢复阅读。一个实现的方法就是记下页码,行数和字数。所以你阅读书的执行上下文是这3个数字。
如果你有一个室友,而且她使用相同的技巧,她可以在你不使用的时候拿书,然后从她停止阅读的地方继续阅读。然后你可以收回它,从你原来的地方恢复它。
线程以同样的方式工作。CPU给了你一个错觉,那就是它在同时进行多个运算。它通过在每个计算上花费一点时间来实现这一点。它可以这样做,因为它为每个计算都有一个执行上下文。就像你可以和朋友共享一本书一样,许多任务可以共享一个CPU。
在更高的技术层面上,执行上下文(因此线程)由CPU寄存器的值组成。
最后:线程不同于进程。线程是执行的上下文,而进程是与计算相关联的一堆资源。一个进程可以有一个或多个线程。
说明:与进程相关的资源包括内存页(进程中的所有线程对内存具有相同的视图)、文件描述符(例如,打开套接字)和安全凭据(例如启动进程的用户ID)。
四:线程和进程的区别
1、线程共享创建它的进程的地址空间;进程有自己的地址空间。
2、线程可以直接访问进程的数据段;进程拥有父进程的数据段的自身副本。
3,同一个进程的线程之间可以直接交流,两个进程想通信,必须通过一个中间代理来实现。
4、新的线程很容易创建;新的进程需要父进程的复制。
5、线程可以对相同进程的线程进行相当的控制;进程只能对子进程进行控制。
6、对主线程的更改(取消、优先级更改等)可能影响进程的其他线程的行为;对父进程的更改不会影响子进程。
五:问题
进程和线程那个快两个没有可比性
启动一个进程快还是线程快?线程快。
这篇文章关于线程,线程锁,信号量等写非常不错。可以
http://www.cnblogs.com/huxi/archive/2010/06/26/1765808.html
最新文章
- Win10升级后回退后无法检测新版本的修复办法
- Java Calendar 类的时间操作
- js一些代码方法
- SDUT 2411:Pixel density
- 堆分配与栈分配---SAP C++电面(5)/FEI
- Python学习笔记——进阶篇【第八周】———进程、线程、协程篇(Socket编程进阶&;多线程、多进程)
- jquery 高级 学习笔记
- 解决https证书验证不通过的问题
- 从头开始基于Maven搭建SpringMVC+Mybatis项目(3)
- 自动弹出pickerview
- 【php】单例模式和工厂模式
- 【分享】谈CSS3中display属性的flex布局
- Android图片采样缩放
- 启动项目时,mapper.xml文件没有导入
- appium 报错
- PHP通过PDFParser解析PDF文件
- 转载-Mac下面的SecureCRT(附破解方案) 更新到最新的8.0.2
- 【SPL标准库专题(10)】SPL Exceptions
- 别再为了this发愁了:JS中的this机制
- keystone源码分析(一)——Paste Deploy的应用
热门文章
- Fork/Join框架实现原理
- 【bzoj2034】 2009国家集训队—最大收益
- (转)Android数据的四种存储方式SharedPreferences、SQLite、Content Provider和File (三) —— SharePreferences
- 解题:洛谷2633 Count on a tree
- Java入门:基础算法之检查素数
- Windows 2012 R2 安装net4.6.1
- Elasticsearch技术解析与实战(一)基础概念及环境搭建
- 把JS和CSS合并到1个文件
- 20155225 2016-2017-2 《Java程序设计》第七周学习总结
- Linux Shell管道调用用户定义函数(使shell支持map函数式特性)