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. [Beta阶段]第二次Scrum Meeting

    Scrum Meeting博客目录 [Beta阶段]第二次Scrum Meeting 基本信息 名称 时间 地点 时长 第二次Scrum Meeting 19/05/03 大运村寝室6楼 40min ...

  2. 冰多多团队-第四次Scrum会议

    冰多多团队-第四次Scrum会议 工作情况 团队成员 已完成任务 待完成任务 zpj 撰写团队任务拆解博客 完成部分Action的实现 牛雅哲 完成了词典单词,词典映射的代码实现,设计了初步的词典异常 ...

  3. FTO Obesity Variant Circuitry and Adipocyte Browning in Humans

    好文献非常难得,提供了核心的研究思路. FTO Obesity Variant Circuitry and Adipocyte Browning in Humans - 这篇文章需要好好的解析 为深入 ...

  4. 【JavaScript】frame跨域访问元素

    什么是跨frame访问元素呢?比如main.html中有如下代码: <frameset cols="50%,*"> <frame src="frame1 ...

  5. RockBrain USB Server外设虚拟化高可用解决方案(银企直联虚拟化解决方案)

    技术指标: 单.双千兆网络界面(支持链路冗余与链路热备.支持双网口均衡负载) 原生USB2.0接口(USB2.0与USB3.0接口均对所有USB版本设备兼容,支持混插) 技术优势: RockBrain ...

  6. 如何用 Go 实现热重启

    热重启 热重启(Zero Downtime),指新老进程无缝切换,在替换过程中可保持对 client 的服务. 原理 父进程监听重启信号 在收到重启信号后,父进程调用 fork ,同时传递 socke ...

  7. StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation - 1 - 多个域间的图像翻译论文学习

    Abstract 最近在两个领域上的图像翻译研究取得了显著的成果.但是在处理多于两个领域的问题上,现存的方法在尺度和鲁棒性上还是有所欠缺,因为需要为每个图像域对单独训练不同的模型.为了解决该问题,我们 ...

  8. Corrupt JPEG data: 1 extraneous bytes before marker 0xd9 JPEG datastream contains no image

    Corrupt JPEG data: 1 extraneous bytes before marker 0xd9 JPEG datastream contains no image 对比发送时的全部数 ...

  9. 卷积神经网络概念及使用 PyTorch 简单实现

    卷积神经网络 卷积神经网络(CNN)是深度学习的代表算法之一 .具有表征学习能力,能够按其阶层结构对输入信息进行平移不变分类,因此也被称为“平移不变人工神经网络”.随着深度学习理论的提出和数值计算设备 ...

  10. windos server2012安装.net core 2.2问题

    服务器是:WinServer 2012 Standard  X64 版本 服务器是:WinServer 2012 DataCenter R2 X64 版本.几个老站点本身正常.如题:.Net Core ...