多进程

作者: 时光清浅03 | 来源:发表于2018-07-09 22:03 被阅读0次

    什么叫做多任务呢?简单的说,就是操作系统(OS)可以同时运行多个任务。

    其实我们的操作系统是典型的多任务的实现

    1、时间片轮换机制

    2、优先级别调度

    进程(process)

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

    Fork

    import os

    print("程序开始运行了……")

    # 注意os模块中的fork,只支持Linux系统,不支持window系统

    # AttributeError: module 'os' has no attribute 'fork' 在window下回抛错

    res = os.fork() # 当程序遇到fork方法,则分为两个进程运行

    print("此时代码已经成为两个进程了……")

    if res == 0:

        print("这个是子进程,子进程的编号是%s,开辟它的主进程编号是%s" %(os.getpid(), os.getppid()))

    else:

        print("这个是主进程,主进程的编号是%s, 它开辟的子进程的编号是%s" %(os.getpid(), res))

    print("程序运行结束……")

    在linu中运行

    运行结果如下:

    getpidgetppid

    我们可以使用os模块的getpid来获取当前进程的进程编号,同样也可以使用os.getppid()方法案来获取当前进程的父进程编号。

    运行结果如下:

    多进程修改全局变量

    进程间是无法共享数据的。

    注意:多个进程间,每个进程的所有数据(包括全局变量)都是各自拥有一份的,互不影响。

    运行结果如下:

    多个fork问题

    multiprocessing

    函数实现方式

    join方法表示只有子进程执行完成后,主进程才能结束。主进程会等待子进程完成后,自身才会执行完成。

    进程类的实现非常的简单,只要继承了Process类就ok了,重新该类的run方法,run方法里面的代码,就是我们需要的子进程代码。

    在进程类的实现中如果想要初始化一些前面我们提到过的参数,如进程名称等,可以使用__init__借助父类来完成。

    相关文章

      网友评论

          本文标题:多进程

          本文链接:https://www.haomeiwen.com/subject/kmgtpftx.html