一、多任务的介绍
- 多任务指同一时间执行多个任务或程序
- 多任务执行的最大好处就是充分利用CPU资源,提高程序的执行效率。
- 两种表现形式:
- 并发:在一段时间内交替地执行多个任务(当任务数量大于CPU核数时)
- 并行:在一段时间内同时执行多个任务(当任务数量小于或等于CPU核数时)
二、进程的介绍和使用
- 概念:进程是系统分配资源的最小单位,一个正在运行的程序就是一个进程
1、多进程完成多任务
多进程是完成多任务的方式之一,程序运行时会默认创建一个进程,该进程为主进程,在程序运行后创建的进程为子进程。
1.进程的创建
-
导入进程包 import multiprocessing
-
创建进程对象 **进程对象 = multiprocessing.Process() **
-
启动进程 进程对象.start()
参数名 说明 target 执行的目标任务名,这里指的是函数名(方法名) name 进程名,一般不用设置 group 进程组,目前只能使用None
2.进程的传参
-
sub_process = multiprocessing.Process(target = 任务, args = (1,), kwargs = {“key”: 3})
-
两种传参方式:
元组方式传参:传参顺序必须与任务中参数顺序一致
字典方式传参:参数的key值必须与任务中的key值保持一致
2、获取进程编号
1.os.getpid()
import os
pid = os.getpid()
print(pid)
# 或者
import multiprocessing
pid = multiprocessing.current_process().pid
print(pid)
2.os.getppid()
def work():
# 查看当前进程
current_process = multiprocessing.current_process()
# 获取当前进程的编号
print(“work进程编号:”, current_process.pid, os.getpid())
# 获取父进程的编号
print(“work父进程的编号:”, os.getppid())
3.os.kill()
注:只在UNIX平台上有效
def work():
# 查看当前进程
current_process = multiprocessing.current_process()
# 获取当前进程的编号
print(“work进程编号:”, current_process.pid, os.getpid())
# 获取父进程的编号
print(“work父进程的编号:”, os.getppid