zoukankan      html  css  js  c++  java
  • 2020年1月16日(多进程)

    1. 什么是进程,什么是线程

    1 什么是进程

    把一个程序执行一下,处于执行状态的程序,叫做进程。
    进程里面至少有一个线程,主线程
    不同进程使用的内存资源都是相互独立的,互不影响和干涉。
    操作系统分配资源的最小单位
    进程肯定比线程占用的资源更多一点

    2 什么是线程
    必须处于一个进程内,一个进程里面可以有多个线程,这些线程公用一个进程
    的地址空间(进程可以使用的内存)
    线程是调度的最小单位

    多进程和多线程:实现并发。
    想测试一个接口的压力。如果我用python写了一个程序,单线程的
    那么这个程序会对服务器有很大的压力么?
    没有很大压力,只能模拟单用户访问的情况,无法模拟双11,618。

    并发:同时向服务器发出请求,实现并发请求,并发计算,提升计算的效率。
    1)做个压力测试程序
    2)并发执行一些任务:爬虫

    IO:输入和输出
    针对磁盘io来说:
    输入:从磁盘读取
    输出:写到磁盘里

    针对网络io:
    输入:从网络读取到数据叫做输入
    输出:写数据到网络



    python:既可以多进程也可以支持多线程。
    (多线程无法使用多核cpu的并行计算能力,密集io型)
    (多进程可以使用多核cpu的并行计算能力,密集计算型)

    下个问题:为什么python的多线程不能利用多核cpu
    GIL锁:global interpreter lock 产生很多的同步操作,会减少并发的效果。

    Java 多线程

    什么是同步,异常,阻塞,什么是锁?

    同步:大象放到冰箱里面有几个步骤?

    1 打开冰箱

    2 放进 去大象

    3 关上门

    同步:

    有顺序的:1-3步,顺序不能错乱,且先完成第一步,在第二步,再第三步。

    异步:

    完成的任务是没有前后依赖关系 ,可以同时去执行的,县城完成的顺序也没有关系

    异常执行组件

    1 社区:注册到用户系统之后

    2 10个子系统也需要注册

    3 同步的情况同步的情况:顺序的从1-10完成子系统的注册。可能会耗时1分钟以上。

    4 异常系统 

    1)注册后立刻提示注册成功。  

    2)异常子系统自封以,且顺序(或并发)发给10个子系统,后台完成注册过程。

    4. 进程的几种状态

    1 新建:操作系统给你分配一些资源:进程号、内存

    2 就绪:具备了执行的条件,但是还没有被cpu选中执行

    轮询的是进程

    QQ ,开微信,开浏览器,CPU为了多进程的执行,同一时刻只能够最多执行一个程序。Cpu的轮询:轮询不会停止。CPU该跑哪个进程?怎么跑?跑哪些?

    操作系统的进度操作(调度算法)

    先进先出:你先进先跑你

    后进后出:

    权重:进程时间较长,需要来算

    看不到线程执行

    3 运行:占用cpu资源做计算了

    4 阻塞:等待完成事(读写文件、网络io、挂起、sleep),完成了之后,在转换为就绪

    5 cpu的组成

    运算器(计算)、控制器(控制各种硬件)和寄存器(存数据的)

    6 进程的上下文和进程调度

      cpu会产生中断,进程运算的数据,会存在寄存器里面,开始运算。

      当前进程在寄存器的数据,会保存到内存中。

      其他进程的数据会挪到cpu寄存器中,然后开始计算。

      进程切换,进程的上下文切换。

      关于进程的,存在寄存器中的各种相关数据,叫做上下文。

    7 进程的特点

    动态性:进程有生命周期。

    并发性:多个进程可同存于内存中

    独立性:资源分配和调度的基本单位。

    进程间通讯:两个程序之间进行交互

    制约性:并发进程间存在制约关系

    结构特征:进程由程序块 、数据块、进程控制块三部分组成。

    进程在cpu执行的时候,cpu寄存器存的是进程的上下文。

    cpu中断后,要把当前进程踢出去,那么cpu的寄存器中存储的进程上下文

    会转存到内存中的进程地址空间,等待下一次cpu轮训!

    程序块:代码

    数据块:局部变量、函数变量、命令行参数等

    进程控制块:调用栈、进程状态等。

    什么叫操作系统

    https://item.jd.com/12535621.html

    1. 
    父进程和子进程:
    如果进程A里面生成了一个新的进程B,新的进程B叫做进程A的子进程
    进程A叫进程B的父进程

    2. 多进程本质

    多进程编程本质:某个进程里面创新了一个子进程,来执行不同的任务

    一个或多个子进程来执行不同的任务。

    3. 编写进程的相关代码

    import os

    print ("process no:",os.getpid())

    pid = os.fork() # 创建一个子进程

    print (pid)  #子进程id0

    if pid == 0:

      print ('I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid()))

    else:

      print ('I (%s) just created a child process (%s).' % (os.getpid(), pid))

    print ("*"*50)

    [root@iZ2zejbxp2btn9jh8knipuZ wxh]# python3 a.py

    process no: 30568

    30569

    0

    I (30568) just created a child process (30569).

    **************************************************

    I am child process (30569) and my parent is 30568.

    **************************************************

    import os

    print ("process no:",os.getpid())#此时只有一个主进程(主程序:当前程序)

    pid = os.fork() # 创建一个子进程,在此句存在了2个进程

    #1)主进程:pid变量的值是什么呢?是主进程的pid

    #2)子进程:pid变量的值是什么呢?是0

    #以此语句,会被主进程和子进程同时执行。

    print (pid)  #主进程:主进程pid   #子进程:0

    if pid == 0:#主进程和子进程都会执行此句,满足if的是子进程。

                #打印了一句话,os.getpid()---》子进程的pid

                #os.getppid()----》子进程的父进程pid

      print ('I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid()))

    else:#被主进程触发了,os.getpid()---》主进程的pid

      print ('I (%s) just created a child process (%s).' % (os.getpid(), pid))

    print ("*"*50)#会被主进程打印一遍,子进程也一遍。

    fork那一句才会创建子进程,所以fork那一句和之后的所有语句,才会2个进程同事执行。

    QQ和QQ的群视频就是主进程/子进程的关系(对应的进程为:qq.exe/odapp.exe)。

    必须启动qq才可以使用群视频。如果退出qq自动退出群视频。

  • 相关阅读:
    [LeetCode]2. Add Two Numbers链表相加
    Integration between Dynamics 365 and Dynamics 365 Finance and Operation
    向视图列添加自定义图标和提示信息 -- PowerApps / Dynamics365
    Update the Power Apps portals solution
    Migrate portal configuration
    Use variable to setup related components visible
    Loyalty management on Retail of Dynamic 365
    Modern Fluent UI controls in Power Apps
    Change screen size and orientation of a canvas app in Power App
    Communication Plan for Power Platform
  • 原文地址:https://www.cnblogs.com/hzyimen/p/12199653.html
Copyright © 2011-2022 走看看