进程基础知识 操作系统 操作系统的发展史(多道技术) 进程介绍 python并发编程之:多进程

摘要:
就绪:进程已准备好运行,并等待系统分配处理器运行。
day31

一丶进程基础知识

什么是程序:

程序就是一堆文件

什么是进程:

进程就是一个正在执行的文件/程序,是对各种资源管理的集合,

进程不具有执行的能力

每个应用是以一个整体的形式暴露给操作系统去管理,里面包含对各种资源的调用,内存的管理,网络接口的调用等等

进程被谁执行:

CPU最终运行你的程序,操作系统调用作用,将磁盘上的程序读取到内存中,然后交由CPU处理

CPU正在运行的一个程序,即:开启了一个进程

二丶操作系统

定义:

操作系统是存在于硬件和软件之间,管理/协调/调度软件与硬件的交互

作用:

一:将一些丑陋复杂的硬件操作封装成一个美丽的接口,给用户使用

二:合理的调度分配多个进程与cpu的关系,

三丶操作系统的发展史(多道技术)

历史:

第一代计算机:电子计算机

优点:独享,

缺点: 浪费资源,所有的程序都是串行

第二代计算机:磁带存储,批处理

优点:节省了程序员连接硬件的时间

缺点:不能独享计算机,不能再运行程序修改BUG,CPU还是串行

第三代计算机:集成电路,多道程序

阻塞:IO阻塞,recv,accept,read,input,write,sleep等

合并计算机类型:将科学计算,密集计算和归档,IO密集型计算机合并

优点:解决了时间和空间上的问题.提高计算机的运算效率和开发效率

缺点:数据隔离,不能独享

第四代计算机:超大规模的集成电路,微处理器

优点: 沿用至今,优点就是好.

 

多道技术:时间和空间上的复用

多道技术的实现是为了解决多个程序竞争或者说共享同一个资源(比如cpu)的有序调度问题

空间复用:一个内存同时运行多个进程

时间复用:多个进程复用一个CPU的时间(同一时间只有一个进程在使用CPU),系统调度分配cpu在多个进程之间切换.

当cpu遇到IO就切换,提升效率

一个进程占用CPU时间过长也会切换,为了实现并发效果,反而会降低程序执行的效率

四丶进程介绍

进程与程序的区别

1.程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;

2.程序是静态的观念,进程是动态的观念;

3.进程具有并发性,而程序没有;

4.进程是竞争计算机资源的基本单位,程序不是。

5.进程和程序不是一一对应的: 一个程序可对应多个进程即多个进程可执行同一程序; 一个进程可以执行一个或几个程序

 

简单概念

串行:所有的进程都是CPU依次结局

并发:单个CPU,同时执行多个进程(多道技术,CPU会自动切换)

并行:多个CPU同时去处理多个进程

阻塞:遇到IO就阻塞

非阻塞:没有IO

进程创建

定义:

进程之间是相互独里的,数据不共享.子进程是克隆父进程的数据

在python中,想要开启一个多进程必须是由主进程,开启子进程

进程的三个状态:

运行(running)态:进程占有处理器正在运行。

就绪(ready)态:进程具备运行条件,等待系统分配处理器以便运行。

等待(wait)态:又称为阻塞(blocked)态或睡眠(sleep)态,指进程不具备运行条件,正在等待某个事件的完成。

 

进程基础知识 操作系统 操作系统的发展史(多道技术) 进程介绍 python并发编程之:多进程第1张

 

区别:windows 和 Linux 创建进程

相同点:

原则:主进程开启子进程两个进程都有相互隔离的独立的空间,互不影响.

不同点:

linux: 子进程空间的初始数据完全是从主(父)进程copy一份.

windows: 子进程空间的初始数据完全是从主(父)进程copy一份,但是有所不同.

 

五丶python并发编程之:多进程

使用函数开启多进程

# -*-coding:utf-8-*-
# Author:Ds
import  time


def task(name):
   print(f'{name} is runing')
   time.sleep(3)
   print('over')

if __name__ == '__main__':
   p=Process(target=task,args=('子进程',)) # 创建开启进程对象, target:指定函数名,args:接收元组参数
   p.start()
   print('in 主进程')

 

使用类开启多进程

# -*-coding:utf-8-*-
# Author:Ds
from multiprocessing import  Process
import  time

class MyProcess(Process):
   def __init__(self,name):
       super().__init__() # 执行父类的初始化方法,开启进程
       self.name=name
       
   def run(self) -> None:     # 开启新的进程要执行的方法
       print(f'{self.name} is runing')
       time.sleep(3)
       print('over')

if __name__ == '__main__':
   p=MyProcess('子进程') # 实例化自定义开启进程对象
   p.start()
   print('in 主进程')

 

免责声明:文章转载自《进程基础知识 操作系统 操作系统的发展史(多道技术) 进程介绍 python并发编程之:多进程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Django组件-forms组件Mybatis之collection与association标签下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python中多进程multiprocessing、多线程threading、线程池threadpool

浅显点理解:进程就是一个程序,里面的线程就是用来干活的,,,进程大,线程小 一、多线程threading 简单的单线程和多线程运行:一个参数时,后面要加逗号 步骤:for循环,相当于多个线程——t=threading.Thread(target=函数名,args=(参数,))——t.start()——while threading.active_coun...

树莓派3b的raspberrypi系统安装pip

上节将python的默认版本更改为python3了,我们可以直接使用python命令,该命令就是使用的python3 我们想要通过pip命令安装python扩展包,先安装pip,apt install没用,通过源码安装 去PyPI · The Python Package Index查找源码包,首先安装setuptools,再安装pip pi@raspb...

python开发模块基础:collections模块&paramiko模块

一,collections模块 在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。1.namedtuple: 生成可以使用名字来访问元素内容的tuple2.deque: 双端队列,可以快速...

python(数字Number)

数字 Python 数字数据类型用于存储数值。 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间 Python 支持三种不同的数值类型: 整型(int) - 通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Lo...

python中使用multipart/form-data请求上传文件

最近测试的接口是上传文件的接口,上传单个文件,我主要使用了2种方法~ 接口例如: URL: http://www.baidu.com/*** method:post 参数: {"salary":19,"file":{}} 1、使用Python的requests上传表单数据和文件 data={"salary":salary} files={'file...

eclipse安装插件的方法,以python为例子

一 转载自:http://www.cnblogs.com/linzhenjie/articles/2639113.html 1、基本需求     1、Eclipse 集成开发环境下载 http://115.com/file/c2vz7io5    JDK6下载 http://115.com/file/c2vz7idq     2、Pydev插件下载  ht...