多进程其二

一、进程的PID号

  1、作用:一台计算机上面同时会运行很多进程,PID号就是分配给每个进程来用于区具体是哪个进程的。

  2、终端查看PID号的指令:

    ①windows:tasklist---查看所有进程,tasklist | findstr PID---指定PID号查看具体进程。

    ②linux:ps aux---查看所有进程,ps aux | grep PID---指定PID号查看具体进程。

  3、py程序中查看PID号:

import multiprocessing
import os


def task():
    print(子进程号:{}.format(os.getpid()))  # 查看当前进程号
    print(子进程号:{}.format(multiprocessing.current_process().pid))  # 查看当前进程号,效果等同于上一条
    print(主进程号:{}.format(os.getppid()))  # 查看当前进程的父进程号


if __name__ == __main__:
    p = multiprocessing.Process(target=task)
    p.start()
    p.join()
    print(主进程号:{}.format(os.getpid()))
    print(pycharm进程号:{}.format(os.getppid()))
‘‘‘
结果为:
子进程号:12504
子进程号:12504
主进程号:8928
主进程号:8928
pycharm进程号:5888
‘‘‘

二、中止进程

import multiprocessing
import time


def task():
    print(子进程开启了...)
    time.sleep(3)
    print(子进程结束了...)


if __name__ == __main__:
    p = multiprocessing.Process(target=task)
    p.start()
    time.sleep(0.1)
    p.terminate()  # 中止子进程
    time.sleep(0.1)
    print(p.is_alive())  # 判断子进程是否存活
‘‘‘
结果为:
子进程开启了...
False
‘‘‘

三、僵尸进程与孤儿进程

  1、僵尸进程:子进程被中止的瞬间不会立刻释放所占用的进程号,此时主进程依然可以看到它开设的子进程的一些基本信息,如PID号,运行时间等等,此时的子进程就称为僵尸进程。

  2、孤儿进程:主进程已被中止,但子进程依然存活,此时的子进程就称为孤儿进程,操作系统会开设专门的机制用于管理孤儿进程来回收相关资源。

四、守护进程:伴随主进程的结束而同步中止的子进程就称为守护进程。

import multiprocessing
import time


def task():
    print(子进程开启了...)
    time.sleep(3)
    print(子进程结束了...)


if __name__ == __main__:
    p = multiprocessing.Process(target=task)
    p.daemon = True  # 声明子进程为守护进程
    p.start()
    time.sleep(0.1)
    print(主进程结束了)
‘‘‘
结果为:
子进程开启了...
主进程结束了
‘‘‘

 

多进程其二

上一篇:Liunx常用操作(一)-BASH SHELL删除命令


下一篇:Ubuntu Docker 安装