5.1.5 Process对象的其他属性与方法

Posted beallaliu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.1.5 Process对象的其他属性与方法相关的知识,希望对你有一定的参考价值。

p.start()  # 只是将命令交给操作系统,操作系统什么时候执行,主进程并不关心。主进程执行完p.start()交给操作系统后,就会立马执行下一条语句。

p.join() # 当主进程执行到p.join()时,会就等待p子进程执行完后,再继续下一语句。

不过,注意了,如果有多个子进程,并不是串行执行的。

因为多个子进程其实在后台是在并行执行的,主进程遇到p.join时只是做了判断子进程是否执行完了,执行完了就过,没执行完就等待,

所以主进程的执行时间,取决于最长的子进程的执行时间,而不是所有子进程执行时间之和。

from multiprocessing import Process
import time
import os


class MyProcess(Process):    # 继承Process类
    def __init__(self, name, n):
        super().__init__()
        self.name = name
        self.n = n

    def run(self):   # 必须重写run方法
        print(%s 开始执行。。。。 % self.name)
        time.sleep(self.n)
        print(%s 执行结束。。。。 % self.name)


if __name__ == __main__:
    start_time = time.time()
    p1 = MyProcess(子进程p1, 3)
    p2 = MyProcess(子进程p2, 5)
    p3 = MyProcess(子进程p3, 2)
    p1.start()
    p2.start()
    p3.start()

    p1.join()
    p2.join()
    p3.join()

    print(主线程的执行时间是:, time.time() - start_time)

输出结果:

子进程p1 开始执行。。。。
子进程p2 开始执行。。。。
子进程p3 开始执行。。。。
子进程p3 执行结束。。。。
子进程p1 执行结束。。。。
子进程p2 执行结束。。。。
主线程的执行时间是: 5.0111658573150635

 

串行执行:

from multiprocessing import Process
import time
import os


class MyProcess(Process):    # 继承Process类
    def __init__(self, name, n):
        super().__init__()
        self.name = name
        self.n = n

    def run(self):   # 必须重写run方法
        print(%s 开始执行。。。。 % self.name)
        time.sleep(self.n)
        print(%s 执行结束。。。。 % self.name)


if __name__ == __main__:
    start_time = time.time()
    p1 = MyProcess(子进程p1, 3)
    p2 = MyProcess(子进程p2, 5)
    p3 = MyProcess(子进程p3, 2)
    p1.start()
    p1.join()
    p2.start()
    p2.join()
    p3.start()
    p3.join()
    print(主线程的执行时间是:, time.time() - start_time)

执行结果:

子进程p1 开始执行。。。。
子进程p1 执行结束。。。。
子进程p2 开始执行。。。。
子进程p2 执行结束。。。。
子进程p3 开始执行。。。。
子进程p3 执行结束。。。。
主线程的执行时间是: 10.029819011688232













以上是关于5.1.5 Process对象的其他属性与方法的主要内容,如果未能解决你的问题,请参考以下文章

Process对象的其它方法与属性(join)

process对象的其他属性或者方法

并发编程-process对象的其他属性方法

Process join方法 以及其他属性

根据其他属性设置属性的方法

编发编程(Process对象的join方法)