初遇python进程
计算机硬件组成
主板 固化(寄存器,是直接和cpu进行交互的一个硬件)
cpu 中央处理器:计算(数字计算和逻辑计算)和控制(控制所有硬件协调工作)
存储 硬盘,内存
输入设备 键盘,鼠标,话筒
输出设备 显示器,音响,打印机等
计算机发展史
第一代计算机:电子管计算机:及其耗电体积庞大,散热量特别高
第二代计算机:晶体管计算机,
第三代计算机:白色大头计算机,集成电路计算机,一个板子固化几十到上百个小硬件
第四代计算机:大型集成电路计算机,一个班子可以固化十万个硬件
第五代计算机:甚大型集成电路计算机
早期计算机是以计算为核心的
现在计算机是以存储为核心的
计算机的操作系统
操作系统是一个软件,是一个能直接操纵硬件的软件.
微软研发的windows操作系统.
人工时代:穿孔打带
每个人都能自己在一段时间内独享计算机所有资源
脱机时代:完全将人和机器隔离开来
单道批处理系统:内存中只允许存放一道作业.
多道批处理系统;内存中允许存放多到作业
分时系统:将cpu的执行划分时间片,每个程序以时间片为单位去执行.
实时系统:一般比较少见,主要用于军事和工业生产上.
dos系统 单用户单任务 纯编程系统
Windows系统 单用户多任务(早期的Windows系统)
unix系统 多用户多任务
为什么要有操作系统?
1.封装了所有硬件的接口,使用户更方便的使用
2.对于计算机内所有资源,进行一个合理的调度和分配
无论什么时候 ,操作系统的目标总是:让用户用起来更加的轻松.高可用,低耦合.
语言的发展史:
计算机识别的是二进制
机器语言:由1和0组成代码
汇编语言:add n,m move n,m
高级语言:面向过程的语言(c),面向对象的语言(c++.java,python,.net,php)
进程的理论
.sh shell脚本文件
.out linux系统中的可执行文件
.bat 批处理脚本文件
.lib 库文件
.exe 可执行文件,双击就能运行的文件
进程:
是指正在执行的程序.
是程序执行过程中的一次指令,数据集等的集合
也可以叫做程序的一次执行过程.
进程是一个动态的概念.
进程由三大部分组成:代码段,数据段,pcb:进程管理控制
进程的三大基本状态:
就绪状态;已经获得运行需要的所有资源,除了cpu
执行状态:已进获得所有资源,包括cpu,处于正在运行
阻塞状态:因为各种原因,进程放弃了cpu,导致进程无法继续执行,此时进程处于内存中,继续等待获取cpu进程的一个特殊状态:
挂起状态:是指因为各种原因,进程放弃了cpu,导致进程无法继续执行,此时进程被踢出内存.
多进程和多进程的相关的常用方法
并行:并行是指两者同时执行,比如有两条车道,在某一个时间点,两条车道上都有车在跑;(资源够用,比如三个线程,四核的CPU )
并发:并发是指资源有限的情况下,两者交替轮流使用资源,比如只有一条车道(单核CPU资源),那么就是A车先走,在某个时刻A车退出把道路让给B走,B走完继续给A ,交替使用,目的是提高效率。
区别:
并行是从微观上,也就是在一个精确的时间片刻,有不同的程序在执行,这就要求必须有多个处理器。
并发是从宏观上,在一个时间段上可以看出是同时执行的,比如一个服务器同时处理多个session。
注意:早期单核CPU时候,对于进程也是微观上串行(站在cpu角度看),宏观上并行(站在人的角度看就是同时有很多程序在执行)。
同步:所谓同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列
。要么成功都成功,失败都失败,两个任务的状态可以保持一致。
异步:所谓异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了
。至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠的任务序列
。
阻塞与非阻塞
阻塞和非阻塞这两个概念与程序(线程)等待消息通知(无所谓同步或者异步)时的状态有关。也就是说阻塞与非阻塞主要是程序(线程)等待消息通知时的状态角度来说的
进程的相关操作
multiprocessing模块:
仔细说来,multiprocessing不是一个模块而是python中一个操作、管理进程的包。 之所以叫multi是取自multiple的多功能的意思,在这个包中几乎包含了和进程有关的所有子模块。由于提供的子模块非常多,为了方便大家归类记忆,我将这部分大致分为四个部分:创建进程部分,进程同步部分,进程池部分,进程之间数据共享。
进程的开启方法:
1.p = Process(target = None,args(,))
def func(i):
time.sleep(1)
print('这里是儿子进程,儿子自己的pid是%s,儿子的父进程的pid是%s'%(os.getpid(),os.getppid())) # os.getpid()获取的是当前进程自己的pid
# os.getppid()获取的是当前进程的父进程的pid
if __name__ == '__main__':
p = Process(target=func,args=(1,))# 实例化一个进程对象
p.start()# 开启一个子进程
print('这里是父亲进程,父进程自己的pid是:%s,父亲的父亲的pid是%s'%(os.getpid(),os.getppid()))
2.自定义类,继承process父类
class MyProcess(Process):
def __init__(self):
super(MyProcess, self).__init__()
def run(self):
print('这是以继承类的方式开启的子进程') if __name__ == '__main__':
p1 = MyProcess()
p1.start()# 是指,解释器告诉操作系统,去帮我开启一个进程, 就绪状态
进程的常用方法:
1.start() 开启一个子进程
2.join() 异步变同步(就是让父类进程停留在join这句话,等待子进程执行结束,父进程在继续执行)
3.is_alive() 判断进程是否还活着.
4.terminate 杀死进程
进程的常用属性:
1.p.name = 给p进程一个名字
2.p.pid 返回p进程的pid
3.p.daemon = True 将p进程设置为守护进程.(True为守护进程,False为普通进程)
守护进程的两个特点:
守护进程会随着父进程的结束而结束
守护进程不可以再创建子进程(不能要孩子)
初遇python进程的更多相关文章
- python——进程基础
我们现在都知道python的多线程是个坑了,那么多进程在这个时候就变得很必要了.多进程实现了多CPU的利用,效率简直棒棒哒~~~ 拥有一个多进程程序: #!/usr/bin/env python #- ...
- 使用gdb调试Python进程
使用gdb调试Python进程 有时我们会想调试一个正在运行的Python进程,或者一个Python进程的coredump.例如现在遇到一个mod_wsgi的进程僵死了,不接受请求,想看看究竟是运行到 ...
- python进程、线程、协程(转载)
python 线程与进程简介 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资 ...
- Python进程、线程、协程详解
进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分配.任务的调度. ...
- python进程池剖析(一)
python中两个常用来处理进程的模块分别是subprocess和multiprocessing,其中subprocess通常用于执行外部程序,比如一些第三方应用程序,而不是Python程序.如果需要 ...
- python——进程、线程、协程
Python线程 Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/env pytho ...
- python/进程线程的总结
python/进程线程的总结 一.进程和线程的描述: 进程:最小的资源管理单位 线程:最小的执行单位 执行一个进程时就默认执行一个线程(主线程) 进程和线程的工作方式: 串行: 假如共有A.B.C任务 ...
- python 进程介绍 进程简单使用 join 验证空间隔离
一.多道程序设计技术(详情参考:https://www.cnblogs.com/clschao/articles/9613464.html) 所谓多道程序设计技术,就是指允许多个程序同时进入内存并运行 ...
- Python 进程之间共享数据
最近遇到多进程共享数据的问题,到网上查了有几篇博客写的蛮好的,记录下来方便以后查看. 一.Python multiprocessing 跨进程对象共享 在mp库当中,跨进程对象共享有三种方式,第一种 ...
随机推荐
- js 日历插件开发
1.HTML完整代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- 我的QT5学习之路(四)——信号槽
一.前言 前面说了Qt最基本的实例创建.控件以及工具集的介绍,相当于对于Qt有了一个初次的认识,这次我们开始认识Qt信号通信的重点之一——信号槽. 二.信号槽 信号槽是 Qt 框架引以为豪的机制之一. ...
- SSIS中出现数据流数据源假死状态的解决办法
相信开发过Sql Server SSIS的人都遇到过在数据流中数据源假死的问题,特别是Excel Source特别容易假死,当job执行到数据流中的Excel Source时,既不报错也不执行,也没有 ...
- python3 使用pyinstaller打包可执行程序
步骤 1.使用pip安装pyinstaller pip install pyinstaller 2. 使用pyinstaller打包程序 pyinstaller -F xxx.py pyinstall ...
- tomcat启动超时, Server Tomcat v6.0 Server at localhost was unable to start within 45 seconds...
本文转自于:http://www.cnblogs.com/yjhrem/articles/2955207.html
- 项目中cxf和weblogic整合时报错的问题
GJYW项目使用的weblogic版本是10.3.6,cxf使用的版本是3.1.4 在将项目部署到weblogic服务器上时就会报错,通过下面的方式可以解决weblogic和cxf框架在一起报错的问题 ...
- 点击底部input输入框,弹出的软键盘挡住input(苹果手机使用第三方输入法 )
测试移动端页面的时候,偶然发现点击底部input输入框时,弹出的虚拟键盘偶尔会挡住input输入框. 输入框固定在页面底部,如图所示: input固定底部设计图.png 点击底部input输入框唤 ...
- filter 图片滤镜的各种设置
filter 图片滤镜 给当前元素加滤镜_改变它的明亮度 定义:filter 属性定义了元素(通常是<img>)的可视效果(例如:模糊与饱和度).作用在图片上或元素上.div{ },或 d ...
- Node.js发送电子邮件
电子邮件作为最广泛使用的一种网络服务和我们的工作学习生活已经密不可分.接受信用卡的账单,注册网站,找回密码等等都需要用到它.今天在就来学习下如何在node下来发送邮件,为当前做的项目提供邮箱校验的功能 ...
- php添加数据库转义特殊字符串
addslashes()