多进程其二

一、进程的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('主进程结束了')
'''
结果为:
子进程开启了...
主进程结束了
'''

猜你喜欢

转载自www.cnblogs.com/caoyu080202201/p/12764348.html