僵尸进程与孤儿进程

from multiprocessing import Process
import time
import os


def task(name):                                                               # os.getppid()查看父进程编号
    print("%s is running, parent id is <%s>" % (os.getpid(), os.getppid()))   # os.getpid()查看自己进程编号
    time.sleep(3)   # 模拟任务运行一段时间
    print("%s is done, parent id is <%s>" % (os.getpid(), os.getppid()))


if __name__ == "__main__":    # windows 一定要把开启指令放到main下面  Linux无所谓
    # Process(target=task, kargs={"name" : "子进程"})  # 方式1
    p = Process(target=task, args=("子进程1",))  # 方式2  实例化得到一个对象
    p.start()    # (仅仅只是给操作系统发送了一个信号)开启子进程,帮你执行task

    print("主", os.getpid(), os.getppid())  # 此时的父进程是pycharm

  父进程的运行过程中开了子进程,这两个进程共用一个打印终端。父进程打印完 主 14140 124 后并没有结束掉。等着子进程运行完后,主进程才会结束。

父进程任何时候查看子进程都能找到(僵尸进程)。子进程结束掉后,留一个状态信息。父进程结束后会清理掉所有信息。

僵尸进程缺点:多个pid被占。如果父进程一直不死,就会有害

孤儿进程:子进程没结束,父进程结束。在Linuxs系统中有一个init进程,是所有进程的父进程。此时,子进程的状态信息由init进程接管

孤儿进程无害,僵尸进程有害。

posted @ 2018-12-15 22:23  混世妖精  阅读(169)  评论(0编辑  收藏  举报