参考博客:
https://blog.csdn.net/hlg1995/article/details/81638732
进程:通俗的来说进程相当于一个正在运行的程序,他是资源调度的最小单位
# 首先导入进程的模块
import multiprocessing
模块中有一个进程类Process
Process的语法结构以及用法:
Process([group [, target [, name [, args [, kwargs]]]]])
- group:指定进程组,目前只能使用None
- target:执行的目标任务名
- name:进程名字
- args:以元组方式给执行任务传参
- kwargs:以字典方式给执行任务传参
Process创建后的实例对象常用的方法
- start():启动子进程实例(创建子进程)
- join([timeout]):是否等待子进程执行结束,或等待多少秒
- terminate():不管任务是否完成,立即终止子进程
Process创建后的实例对象常用的属性
- name:当前进程的别名,默认为Process-N,N为从1开始递增的整数
- pid:当前进程的pid(进程号)
获取进程的pid:
import multiprocessing
import time
import os
def work():
# 查看当前进程
current_process = multiprocessing.current_process()
print("work:", current_process)
# 获取当前进程的编号
print("work进程编号:", current_process.pid, os.getpid())
# 获取父进程的编号
print("work父进程的编号:", os.getppid())
for i in range(10):
print("工作中....")
time.sleep(0.2)
# 扩展: 根据进程编号杀死对应的进程
os.kill(os.getpid(), 9)
if __name__ == '__main__':
# 查看当前进程
current_process = multiprocessing.current_process()
print("main:", current_process)
# 获取当前进程的编号
print("main进程的编号:", current_process.pid)
# 创建子进程
sub_process = multiprocessing.Process(target=work)
# 启动进程
sub_process.start()
# 主进程执行打印信息操作
for i in range(20):
print("我在主进程中执行...")
time.sleep(0.2)
运行结果
main: <_MainProcess(MainProcess, started)>
main进程的编号: 67264
我在主进程中执行...
work: <Process(Process-1, started)>
work进程编号: 71956 71956
work父进程的编号: 67264
工作中....
我在主进程中执行...
我在主进程中执行...
给子进程传递指定参数参数
import multiprocessing
# 显示人员信息
def show_info(name, age):
print(name, age)
if __name__ == '__main__':
# 创建子进程
# 1. group:进程组,目前必须使用None,一般不用设置
# 2. target:执行目标函数
# 3. name: 进程名称
# 4. args: 以元组方式给函数传参
# 5. kwar