• 进程初始


    进程(Process)是计算机的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.是对于运行的程序的抽象,从实际角度看,是一种数据结构,目的在于清晰的刻画动态系统的内在规律,有效的管理和调度进入系统主存储器运行的程序.

    注意: 同一个程序执行两次,就会在操作系统中出现两个进程,所以我们可以同时运行一个软件,分别做不同的事也不会混乱.

    进程调度:

    1.先来先服务调度算法
    2.短作业优先调度算法
    3.时间片轮转法
    4.多级反馈队列

    进程的三大状态分别是:就绪状态(除CPU以外所有的资源都分配到),运行状态(正在运行),阻塞状态(放弃CPU执行,将进程放入内存中)

    进程的创建于结束:

    1.系统初始化
    2.一个进程正在运行过程中开启了子进程
    3.用户的交互请求,而创建一个新进程
    4.一个处理作业的初始化

    1.正常退出
    2.出错退出
    3.严重出错
    4.被其他进程杀死

    创建子进程就需要介绍multiproces模块,借助此模块可以完成进程的创建

    注意:
    1.需要使用关键字的方式来指定参数
    2.args指定的为传给target函数的位置参数,是一种元组形式,必须有逗号
    3.target表示调用对象,即子进程要执行的任务
    4.args表示调用对象的位置参数元组,args = (1,2,"egon")
    5.kwargs表示调用对象字典,kwargs = {"name":"egon","age":18}
    6.name是子进程的名字

    import time
    from multiprocessing import Process
    
    def f(name):
        print('hello', name)
        print('我是子进程')
    
    if __name__ == '__main__':
        p = Process(target=f, args=('bob',))
        p.start()
        time.sleep(1)
        print('执行主进程的内容了') 
    import time
    from multiprocessing import Process
    
    def f(name):
        print('hello', name)
        time.sleep(1)
        print('我是子进程')
    
    
    if __name__ == '__main__':
        p = Process(target=f, args=('bob',))
        p.start()
        #p.join()
        print('我是父进程')
    import os
    from multiprocessing import Process
    
    def f(x):
        print('子进程id :',os.getpid(),'父进程id :',os.getppid())
        return x*x
    
    if __name__ == '__main__':
        print('主进程id :', os.getpid())
        p_lst = []
        for i in range(5):
            p = Process(target=f, args=(i,))
            p.start()

    进程中的方法:
    p.start()开始创建一个进程
    p.join()让父进程在子进程执行完后再继续执行(同步)
    p.is_alive()判断进程是否还在
    p.terminate()杀死一个进程
    os.getpid()获取当前进程的pid
    os.getppid()获取父进程的pid
    p.daemon = True,将p设为守护进程

    守护进程:
    1.守护进程会在主程序代码执行结束后就终止
    2.守护进程内无法在开启子进程,否则抛出异常
    注意:进程之间是独立的,主进程代码运行结束,守护进程随即终止

  • 相关阅读:
    Android sendToTarget
    OSI七层模型具体解释
    JAVA中字符串比較equals()和equalsIgnoreCase()的差别
    [Angular 2] ng-class and Encapsulated Component Styles
    [Angular 2] Passing data to components with @Input
    [Angular 2] Template property syntax
    [Angular 2] Adding a data model
    [Angular 2] Using ng-model for two-way binding
    [Angular 2] ngFor
    [Angular 2] Inject Service
  • 原文地址:https://www.cnblogs.com/smile568968/p/9506884.html
Copyright © 2020-2023  润新知