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

技术标签: python  运维  操作系统  

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)态,指进程不具备运行条件,正在等待某个事件的完成。

1613203-20190722181305007-201610651.png
​ 图片来自百度百科

区别: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 主进程')

转载于:https://www.cnblogs.com/dengl/p/11215131.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dayinji1212/article/details/101887270

智能推荐

大数据——Java 知识点整理_java大数据需要掌握哪些框架的哪些内容-程序员宅基地

文章浏览阅读1.3w次,点赞12次,收藏30次。1. JDK 和 JRE 有什么区别?JDK:Java Development Kit 的简称,java开发工具包,提供了java的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,java运行环境,为java的运行提供了所需环境。具体来说,JDK其实包含了JRE,同时还包含了编译java源码的编译器javac,还包含了许多java程序调试和分析的工具。要运行java程序,只需要安装JRE就可以了,如果需要编写java程序,则还需要安装JDK。2. java_java大数据需要掌握哪些框架的哪些内容

硬盘柱面损坏怎么办_硬盘坏道屏蔽工具,详细教您如何修复硬盘坏道-程序员宅基地

文章浏览阅读9.7k次。我们有遇到过硬盘出现坏道的用户都知道,硬盘坏道的确是件感觉糟糕透了的事情,会让我们的电脑运行速度变慢,如果当我们遇见这种情况,可以使用硬盘坏道屏蔽工具来对硬盘坏道进行屏蔽,从而到达修复的目的,下面就是使用的方法。长期使用的笔记本和台式机,硬盘可能会有坏道,肯定不会全部都是坏道,不能使用了。硬盘在使用过程产生了坏道,怎么屏蔽呢,能修复吗?答案是肯定的,为了让硬盘得到使用最大化,下面,小编就把硬盘坏道..._固态硬盘柱面损坏怎么办啊

前端学习网站分享(完善ing)-程序员宅基地

文章浏览阅读85次。网易云课堂

Java编译器和虚拟机的文件寻找机制_javac payroll.java-程序员宅基地

文章浏览阅读470次,点赞2次,收藏2次。本文资料来源于《Java核心技术》在Java程序的开发和使用中,经常需要与编译器或虚拟机的文件寻找机制打交道,这也是写此篇博客的原因。源文件和类文件的组织为了更好的组织不同功能的代码,Java允许程序员使用包来管理不同的类。要想将一个类放入某个包里,只需要在其源文件开头使用package关键字声明即可,如下图所示:上图包名为com.horstmann.corejava,其与域名类似,这样可以有效避免包名冲突,做是业内推荐做法。包中源文件和类文件需放置到与包名匹配的子目录中,如下图所示:此._javac payroll.java

Java手写实现IOC_java ioc手写实现-程序员宅基地

文章浏览阅读844次。什么是依赖注入?平常的Java开发中,程序员在某个类中需要依赖其它类的方法。我们通常是new一个依赖类再调用类实例的方法set进去,这种开发存在的问题是new的类实例不好统一管理。所以Spring提出了依赖注入的思想,即依赖类不由程序员实例化,而是通过Spring容器帮我们new指定实例并且将实例注入到需要该对象的类中。依赖注入的另一种说法是"控制反转"。通俗的理解是:平常我们new一个实例,这个实例的控制权是我们程序员而控制反转是指new实例工作不由我们程序员来做而是交给Spring容器来做。注_java ioc手写实现

C语言进阶:文件操作,学生信息管理系统_编制学生类,实现学生信息的文本文件方式的读、写操作 (1)将学生信息从键盘输入,写-程序员宅基地

文章浏览阅读1.6k次,点赞3次,收藏27次。文章目录1. 重定向1.1 重定向文件输出1.2 重定向文件输入1.3 结构体存取2. 读文件和写文件3. 打开文件和关闭文件4. 综合大题5. 二进制读写1. 重定向1.1 重定向文件输出把运行出来的内容直接保存在文件中 ./a.out > hello.txt#include <stdio.h>int main(){ printf("hallo\n");}重定向执行结果:[admin@localhost cfile]$ ./hi > hi.txt_编制学生类,实现学生信息的文本文件方式的读、写操作 (1)将学生信息从键盘输入,写

随便推点

java 包导入快捷键_Java导入包的快捷键-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏11次。Random类是在java.util这个包中。可以手动在源程序顶部输入importjava.util.Random;语句来申明该程序将要使用java.util包中的Random类,然而有了Eclipse,就不用那么麻烦了—把光标移动到有红色波浪线的Random上,然后按下Ctrl+Shift+M,Eclipse会自动帮你完成导入的工作了。此时保存一下源代码,警告是不是消失了?希望你牢记这个快捷键的..._java导入类包快捷键

MIPS反汇编拆炸弹-程序员宅基地

文章浏览阅读6.6k次,点赞26次,收藏114次。计算机系统原理的实验,参考了我的前舍友和不知道哪位同学的博客,不过写得也太简略了并且还有一些错误,更像是单纯的记录,对手头没代码的人大概没啥意义吧。所以就把我自己做时的带注释的代码贴住来吧,也不过是记录罢了。两位同学的博客:MIPS - 反汇编 - 拆炸弹 - bomb(如你所见直接把标题抄过来了)bomb二进制炸弹拆除实验(MIPS)如果有同校学弟做实验时看到这篇博客,还是希望可以先尽量尝试独立完成,实在没办法时再来参考。如有错误,欢迎指正。前导知识gdb操作请看:GDB汇编调试指令合集MI_mips反汇编

nRF 蓝牙广播数据及操作相关_sd_ble_gap_adv_data_set-程序员宅基地

文章浏览阅读1.8k次。若使用 advdata 中 sd_ble_gap_adv_set_configure 的方法设置广播,仍可以按照advertising的配置方法,广播数据结构体用 ble_advdata_t ,将各值填入后,要解析一遍才可 sd_ble_gap_adv_set_configure 配置广播数据:/**@brief Struct that contains pointers to th..._sd_ble_gap_adv_data_set

虚拟机安装Centos7.8_centos7.8虚拟机安装-程序员宅基地

文章浏览阅读825次。虚拟机安装Centos7.8下载centos7镜像安装Centos7.8标准版用Xhell或其他工具进行连接最后下载centos7镜像[阿里镜像下载链接][http://mirrors.aliyun.com/centos/7.8.2003/isos/x86_64/][其他镜像下载站参考这里][http://isoredirect.centos.org/centos/7/isos/x86_64/],选择国内的资源站下载速度会比较快!按照需求选择版本,这里演示在VMware安装Centos7.8标准版_centos7.8虚拟机安装

《中级》Flink 读写hbase_flink table写入hbase依赖包-程序员宅基地

文章浏览阅读1.2k次。ReadFromHBaseimport lombok.extern.slf4j.Slf4j;import org.apache.flink.addons.hbase.TableInputFormat;import org.apache.flink.api.java.DataSet;import org.apache.flink.api.java.ExecutionEnvironment..._flink table写入hbase依赖包

Apache Doris 原理与实践-程序员宅基地

文章浏览阅读5.7k次,点赞5次,收藏20次。Apache Doris 简介Doris(原百度 Palo)是一款基于大规模并行处理技术的分布式 SQL 数据库,由百度在 2017 年开源,2018 年 8 月进入 Apache 孵化器。本次将主要从以下三部分介绍 Apache Doris.Doris 定位:即 Doris 所要面临的业务场景及解决的问题 Doris 关键技术 Doris 案例介绍01 Doris 定位实时数据仓库 Doris产品定位我们首先看一下 Doris 整个的定位。MPP 架构的关系型分析数据库_doris 原理

推荐文章

热门文章

相关标签