python 开启进程的两种方法、以及查询子进程与父进程

方法1

先输出主进程,再输出子进程是因为 p.start() 只是给系统发送就绪信号有延时,所以主进程都执行完了,可能子进程才到他开始运行

from multiprocessing import Process  # 创建进程的模块

def task(name):
    print(name)

if __name__ == '__main__':  
    # 开启子进程  参数1:方法名(不要带括号)   参数2:参数(元祖)      返回对象
    p = Process(target=task, args=('子进程1',))
    p.start()  # 只是给操作系统发送了一个就绪信号,并不是执行。操作系统接收信号后安排cpu运行

    print('主进程')

    # 输出:主进程--> 子进程

方法2 - 类的方法

from multiprocessing import Process  # 创建进程的模块

class MyProcess(Process):
    def __init__(self, name):
        super().__init__()
        self.name = name

    def run(self):  # 固定名字run !!!必须用固定名
        print(self.name)

if __name__ == '__main__':  # 必须要这样启动 
    p = MyProcess('子进程1')
    p.start()
    print('主进程')

查看进程ID 与 父进程ID

import os
from multiprocessing import Process

def taks():
    # os.getpid = 取进程id
    # os.getppid =  取父进程id
    print('这里是进程: %sd   父进程ID:%s' % (os.getpid(), os.getppid()))

if __name__ == '__main__':
    p = Process(target=taks)
    p.start()

    print('主进程',os.getpid())

.jion 等待子进程运行完毕

import os
from multiprocessing import Process

class MyProcess(Process):
    def __init__(self, name):
        super().__init__()
        self.name = name

    def run(self):  # 固定名字run !!!
        print(self.name)

if __name__ == '__main__':
    p = MyProcess('子进程1')
    p.start()

    p.join()  # 【主进程等 子进程运行完毕再执行后面程序】
    print('主')

terminate 像操作系统发送干掉进程命令is_alive,不会立即关闭,所以is_alive立刻查看的结果可能还是存活

is_alive 判断进程是否存活

你可能感兴趣的:(Python全栈开发,知识梳理大纲)