• 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 里就会循环调用,报错

  • 相关阅读:
    ST表学习笔记
    LCA学习笔记
    $ZOJ 2432 Greatest Common Increasing Subsequence$
    $SP15637 GNYR04H - Mr Youngs Picture Permutations$
    Noip2016换教室
    洛谷4718【模板】Pollard-Rho算法
    CQOI2016 密钥破解
    Poj3696 The Lukiest Number
    Noip2012同余方程
    同余
  • 原文地址:https://www.cnblogs.com/zhang-yl/p/10029428.html
Copyright © 2020-2023  润新知