python进程(1)简单使用
2021/9/5 7:07:25
本文主要是介绍python进程(1)简单使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在python中使用进程的时候是使用的是multiprocessing库。
下面简单总结python中的进程符合创建以及使用。
1、process进程类的说明
(1) Process([group[,target[,name[,args[,kwargs]]]]])
参数说明:
- group:指定进程组,目前只能使用None
- target:进程执行目标的任务名
- name:进程名称
- args:以元组方式对执行任务进行传参
- kwargs:以字典方式给执行任务进行传参
(2) Process创建实例对象的常用方法:
- start():启动子进程的实例(创建子进程)
- join():等待子进程执行结束
- terminate():无论任务是否完成,立即终止子进程
(3) process进程实例
- 创建子进程完成跳舞任务,主进程执行唱歌任务:(注意,进程必须在main方法中启用,即在__main__中启动)
# 1、导入进程包 import multiprocessing import time # 跳舞任务 def dance(): for i in range(3): print('正在跳舞中......') time.sleep(0.3) # 唱歌任务 def sing(): for i in range(3): print('正在唱歌中......') time.sleep(0.4) # 2、实例化子进程 dance_process = multiprocessing.Process(target=dance) if __name__ == '__main__': # 3、启动子进程,去执行对应的任务 dance_process.start() # 主进程执行唱歌任务 sing() 运行结果: 正在唱歌中...... 正在唱歌中...... 正在跳舞中...... 正在跳舞中...... 正在唱歌中...... 正在跳舞中......
- 唱歌和跳舞任务都使用子进程来执行
# 1、导入进程包 import multiprocessing import time # 跳舞任务 def dance(): for i in range(3): print('正在跳舞中......') time.sleep(0.3) # 唱歌任务 def sing(): for i in range(3): print('正在唱歌中......') time.sleep(0.4) # 2、实例化子进程 dance_process = multiprocessing.Process(target=dance) sing_process = multiprocessing.Process(target=sing) if __name__ == '__main__': # 3、启动子进程,去执行对应的任务 dance_process.start() # 子进程执行唱歌任务 sing_process.start() 运行结果: 正在跳舞中...... 正在唱歌中...... 正在跳舞中...... 正在唱歌中...... 正在跳舞中...... 正在唱歌中......
进程执行是无序的,具体哪个及产能先执行是由操作系统调度决定的。
2、获取进程的编号
(1) 获取进程编号的目的
获取进程编号的目的是为了验证主进程和子进程之间的关系,可以得知子进程是由哪一个主进程创建的。
操作步骤:获取当前进程的编号,通过该进程获取父进程的编号,如果获取到父进程的编号是当前主进程的编号,那么该子进程就是该主进程创建的。
(2) 获取当前进程的编号
- os.getpid():获取当前进程的id
- os.getppid():获取当前进程的父进程的id
- multiprocessing.current_process():获取当前进程的进程对象
# 1、导入进程包 import multiprocessing import time import os # 跳舞任务 def dance(): # 获取当前dance程序进程的id dance_process_id = os.getpid() # 获取当前dance程序进程对象 dance_process_obj = multiprocessing.current_process() print('dance进程的对象:%s, dance进程的id:%s' %(dance_process_obj, dance_process_id)) # 获取当前dance程序进程的父进程id dance_process_parent_id = os.getppid() print('dance程序进程的父进程的id:', dance_process_parent_id) for i in range(3): print('正在跳舞中......') time.sleep(0.3) # 唱歌任务 def sing(): # 获取当前sing程序进程的id sing_process_id = os.getpid() # 获取当前sing程序进程对象 sing_process_obj = multiprocessing.current_process() print('sing进程的对象:%s, sing进程的id:%s' %(sing_process_obj, sing_process_id)) # 获取当前sing程序进程的父进程id sing_process_parent_id = os.getppid() print('sing程序进程的父进程的id:', sing_process_parent_id) for i in range(3): print('正在唱歌中......') time.sleep(0.4) # 2、实例化子进程 dance_process = multiprocessing.Process(target=dance, name="dance_process") sing_process = multiprocessing.Process(target=sing, name="sing_process") if __name__ == '__main__': # 3、启动子进程,去执行对应的任务 dance_process.start() # 子进程执行唱歌任务 sing_process.start() # 获取当前main程序进程的id main_process_id = os.getpid() print('当前main程序进程的id:',main_process_id) # 获取当前main程序进程对象 main_process_obj = multiprocessing.current_process() print('当前main程序进程对象:',main_process_obj) 运行结果: 当前main程序进程的id: 7032 当前main程序进程对象: <_MainProcess(MainProcess, started)> dance进程的对象:<Process(dance_process, started)>, dance进程的id:1392 dance程序进程的父进程的id: 7032 正在跳舞中...... sing进程的对象:<Process(sing_process, started)>, sing进程的id:2104 sing程序进程的父进程的id: 7032 正在唱歌中...... 正在跳舞中...... 正在唱歌中...... 正在跳舞中...... 正在唱歌中......
由结果看出,sing子程序和dance子程序都是由主程序MainProcess创建的。
**(3)**杀死指定进程
os.kill(process_id,sig):process_id为要杀死的指定进程的id,sig为操作状态:操作(第二个参数)的常用取值为:
- SIGINT 终止进程 中断进程
- SIGTERM 终止进程 软件终止信号
- SIGKILL 终止进程 杀死进程
- SIGALRM 闹钟信号
# 1、导入进程包 import multiprocessing import time import os import signal # 跳舞任务 def dance(): # 获取当前dance程序进程的id dance_process_id = os.getpid() # 获取当前dance程序进程对象 dance_process_obj = multiprocessing.current_process() print('dance进程的对象:%s, dance进程的id:%s' %(dance_process_obj, dance_process_id)) # 获取当前dance程序进程的父进程id dance_process_parent_id = os.getppid() print('dance程序进程的父进程的id:', dance_process_parent_id) for i in range(3): print('正在跳舞中......') time.sleep(0.3) os.kill(dance_process_id, signal.SIGKILL) # 唱歌任务 def sing(): # 获取当前sing程序进程的id sing_process_id = os.getpid() # 获取当前sing程序进程对象 sing_process_obj = multiprocessing.current_process() print('sing进程的对象:%s, sing进程的id:%s' %(sing_process_obj, sing_process_id)) # 获取当前sing程序进程的父进程id sing_process_parent_id = os.getppid() print('sing程序进程的父进程的id:', sing_process_parent_id) for i in range(3): print('正在唱歌中......') time.sleep(0.4) # 2、实例化子进程 dance_process = multiprocessing.Process(target=dance, name="dance_process") sing_process = multiprocessing.Process(target=sing, name="sing_process") if __name__ == '__main__': # 3、启动子进程,去执行对应的任务 dance_process.start() # 子进程执行唱歌任务 sing_process.start() # 获取当前main程序进程的id main_process_id = os.getpid() print('当前main程序进程的id:',main_process_id) # 获取当前main程序进程对象 main_process_obj = multiprocessing.current_process() print('当前main程序进程对象:',main_process_obj) 运行结果: 当前main程序进程的id: 2044 当前main程序进程对象: <_MainProcess(MainProcess, started)> dance进程的对象:<Process(dance_process, started)>, dance进程的id:9404 sing进程的对象:<Process(sing_process, started)>, sing进程的id:10940 dance程序进程的父进程的id: 2044 正在跳舞中...... sing程序进程的父进程的id: 2044 正在唱歌中...... 正在唱歌中...... 正在唱歌中......
由此可以看出dance进程已经被杀死。
这篇关于python进程(1)简单使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-20Python编程入门指南
- 2024-12-20Python编程基础与进阶
- 2024-12-19Python基础编程教程
- 2024-12-19python 文件的后缀名是什么 怎么运行一个python文件?-icode9专业技术文章分享
- 2024-12-19使用python 把docx转为pdf文件有哪些方法?-icode9专业技术文章分享
- 2024-12-19python怎么更换换pip的源镜像?-icode9专业技术文章分享
- 2024-12-19Python资料:新手入门的全面指南
- 2024-12-19Python股票自动化交易实战入门教程
- 2024-12-19Python股票自动化交易入门教程
- 2024-12-18Python量化入门教程:轻松掌握量化交易基础知识