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