Python进阶----计算机基础知识(操作系统多道技术),进程概念, 并发概念,并行概念,多进程实现

一丶进程基础知识

什么是程序:

​   程序就是一堆文件

什么是进程:

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

​   进程不具有执行的能力

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

进程被谁执行:

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

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

二丶操作系统

定义:

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

作用:

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

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

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

历史:

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

​      优点:独享,

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

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

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

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

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

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

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

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

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

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

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

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

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

​   空间复用:内存可以加载多个进程,前期没有实现物理隔离.

​   时间复用: 操作系统可以调配cpu在不同的进程之间切换.雨露均沾.(遇到IO阻塞就会切换,一个进程的停留时间过长,就会切换.)

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

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

四丶进程介绍

进程与程序的区别

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

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

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

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

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

简单概念

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

​   并发:单个CPU, 当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。(多道技术,CPU会自动切换)

​   并行:当系统有一个以上CPU时,一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行。

​   阻塞:遇到IO就阻塞

​   非阻塞:没有IO

进程创建

​   定义:

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

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

​   进程的三个状态:

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

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

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



​ 图片来自百度百科

区别:windows 和 Linux 创建进程

​   相同点:

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

​   不同点:

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

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

​       windows: 使用 CreateProcess, 创建进程

​       linux: 使用fork() 创建进程

五丶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进阶----计算机基础知识(操作系统多道技术),进程概念, 并发概念,并行概念,多进程实现的更多相关文章

  1. Java多线程原理+基础知识(超级超级详细)+(并发与并行)+(进程与线程)1

    Java多线程 我们先来了解两个概念!!!! 1.什么是并发与并行 2.什么是进程与线程 1.什么是并发与并行 1.1并行:两个事情在同一时刻发生 1.2并发:两个事情在同一时间段内发生 并发与并行的 ...

  2. day01<计算机基础知识&Java语言基础>

    计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...

  3. 计算机基础知识和tcp详解

    计算机基础知识 作为应用软件开发程序员是写应用软件的,而应用软件必须应用在操作系统之上,调用操作系统接口,由操作系统控制硬件 比如客户端软件想要基于网络发送一条消息给服务端软件,流程是: 1.客户端软 ...

  4. Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量

    Python进阶----线程基础,开启线程的方式(类和函数),线程VS进程,线程的方法,守护线程,详解互斥锁,递归锁,信号量 一丶线程的理论知识 什么是线程:    1.线程是一堆指令,是操作系统调度 ...

  5. Python开发(一):Python介绍与基础知识

    Python开发(一):Python介绍与基础知识 本次内容 一:Python介绍: 二:Python是一门什么语言 三:Python:安装 四:第一个程序 “Hello world” 五:Pytho ...

  6. 【java基础】01 计算机基础知识

    一.计算机基础知识 1. 计算机 1. 什么是计算机? 计算机在生活中的应用举例 计算机(Computer)全称:电子计算机,俗称电脑.是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设 ...

  7. Java学习1——计算机基础知识

    本文包含了一些计算机基础知识:计算机组成:Windows常用快捷键:DOS常用命令:计算机语言发展史.

  8. 《Java从入门到失业》第一章:计算机基础知识(一):二进制和十六进制

    0 前言 最近7年来的高强度工作和不规律的饮食作息,压得我有些喘不过气,身体也陆续报警.2018年下半年的一场病,让我意识到了这个问题的严重性,于是开始强制自己有规律饮食和作息,并辅以健身锻炼,不到2 ...

  9. {Python之进程} 背景知识 什么是进程 进程调度 并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 multiprocess模块 进程池和mutiprocess.Poll

    Python之进程 进程 本节目录 一 背景知识 二 什么是进程 三 进程调度 四 并发与并行 五 同步\异步\阻塞\非阻塞 六 进程的创建与结束 七 multiprocess模块 八 进程池和mut ...

随机推荐

  1. leetcode 494. 目标数

    题目描述: 给定一个非负整数数组,a1, a2, ..., an, 和一个目标数,S.现在你有两个符号 + 和 -.对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面. 返回可以 ...

  2. 【Laravel基础】laravel基础之相关概念,自定义服务提供者:Contracts, ServiceContainer, ServiceProvider, Facades关系

    Contracts, ServiceContainer, ServiceProvider, Facades关系 概念 Contracts 合同,契约,也就是接口,定义一些规则,每个实现此接口的都要实现 ...

  3. Comparable接口的使用

    功能: Comparable接口可用于对象的排序或者对象的分组 介绍: Comparable接口强行对实现它的类的每个实例进行自然排序,该接口的唯一方法compareTo方法被称为自然比较方法 方法: ...

  4. Vue 项目中断点没有跳转到指定源码的问题

    将配置中 devtool 改为以下即可. devtool: 'source-map' 如果是在 vue-cli 2.x ,那么就在 webpack.dev.config.js 中 如果是 vue-cl ...

  5. tomcat高并发优化的参数优化并查看tomcat线程数

    在Tomcat配置文件conf下面 server.xml 中的配置中和连接数相关的参数有: minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10 maxProcessor ...

  6. Springboot 条件注解

    @Conditional 根据满足某一个特定条件创建一个特定的 Bean.就是根据特定条件来控制 Bean 的创建行为,这样我们可以利用这个特性进行一些自动的配置 Springboot 中大量用到了条 ...

  7. 【转载】 tf.Print() (------------ tensorflow中的print函数)

    原文地址: https://blog.csdn.net/weixin_36670529/article/details/100191674 ------------------------------ ...

  8. 仿简书MarkDown编辑器可同步滚动

    模仿简书的MarkDown编辑器,使用Angular8写的示例 1.支持同步滚动 编辑的过程中,右侧预览界面会同步滚动.滚动右侧预览界面,左侧编辑区也会同步滚动哦 2.支持语法高亮 如下: using ...

  9. Ubuntu上使用Docker打包镜像

    关于这个一开始会有点懵,直白一点就是,把本地路径下的代码放到docker里面去,然后在docker这个隔离环境中运行调用我们的程序.专业解释请自行检索学习. 第一步:创建容器 docker run - ...

  10. 深入Nginx之《HTTP请求报文与HTTP响应报文》

    HTTP请求报文 这个很有必要了解,好歹我们得知道Nginx在提供HTTP服务时,客户端都会传些什么.HTTP请求中客户端传送的内容称为HTTP请求报文. 1.请求行包含: 请求方法,请求URL,HT ...