zoukankan      html  css  js  c++  java
  • python记录_day30 多进程

    1、什么是进程

    进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配调度的基本单位,是操作系统结构的基础。

    同一个程序执行两次,就会产生两个进程

    ## 进程调度算法:

      先来先服务

      短作业优先

      时间片轮转法

      多级反馈队列

    2、并发和并行

    并发是伪并行,只是看起来是同时运行的。它是基于单核的,一个CPU加多道技术就可实现(多道技术:多个进程之间来回切换)

    并行:同时运行,要依靠多个cpu才能实现

    3、进程状态转换图

     4、同步/异步

    同步:一个任务的进行需要等待前面任务的完成

    异步:不需要等待前面任务的完成

    5、创建进程

    #方式一

     1 import time
     2 import os
     3 from multiprocessing import Process
     4 
     5 def func1():
     6     time.sleep(2)
     7     print('我是func1')
     8 
     9 def func2():
    10     time.sleep(2)
    11     print('我是func2')
    12     print('子进程id',os.getpid())
    13     print('父进程id',os.getppid())
    14 
    15 
    16 if __name__ =='__main__':
    17     start = time.time()
    18     # func1()
    19     # func2()
    20     
    21     #开子进程
    22     p = Process(target=func2)
    23     p.start()  #告诉系统创建子进程
    24     func1()
    25     
    26     # p2 =Process(target=func1)
    27     # p2.start()
    28     # print('主进程id',os.getpid())
    29 
    30     end = time.time()
    31     diff= end-start
    32     print('时间差是》',diff)
    创建进程1

    #方式2

     1 import time
     2 from multiprocessing import Process
     3 
     4 class MyProcess(Process):
     5     #自定义初始化
     6     def __init__(self,n):
     7         super().__init__()  #必须调用父类的初始化,不然会报错
     8         self.n = n
     9     # run方法要重写,里面是你想让子进程运行的东西
    10     def run(self):
    11         print(self.n)
    12         time.sleep(2)
    13         print('子进程结束')
    14 
    15 if __name__ == '__main__':
    16     p = MyProcess(520)
    17     p.start()
    18     p.join()
    19 
    20     print('主进程结束')
    创建进程2

    6、注意

    #进程之间是空间隔离的(保证数据安全)

    #由于进程创建机制不同,在windows下创建子进程的语句要放在 if __name__ =="__main__" 里,因为windows系统创建进  程时相当于import,会先执行一遍文件并拷贝,如果不放在 if 里就会循环调用,报错

  • 相关阅读:
    PE文件解析器的编写(二)——PE文件头的解析
    PE解析器的编写(一)——总体说明
    PE文件详解(九)
    PE文件详解(八)
    06_建造者模式
    05_模板方法模式
    04_抽象工厂模式
    03_简单工厂模式(静态工厂模式)
    02_工厂方法模式
    01_单例模式
  • 原文地址:https://www.cnblogs.com/zhang-yl/p/10029428.html
Copyright © 2011-2022 走看看