一、概念
1.1、多任务概念
多任务是指在同一时间内执行多个任务,如Windows下打开QQ的同时打开浏览器
多任务可以提高程序的执行效率,提高CPU利用率
1.2、并发(多任务表现形式一)
一段时间内交替执行多个任务,并发一般出现在任务数量大于CPU的核心数(单核)
1.3、并行(多任务表现形式二)
一段时间内真正的同时一起执行多个任务,并行一般出现在任务数量小于CPU的核心数(多核)
二、多任务之多进程
2.1、进程概念
进程(process)是资源分配的最小单位,是操作系统进行资源分配和调度运行的基本单位,通俗理解:一个正在运行的程序就是一个进程。例如QQ、微信等
一个运行的程序至少有一个进程
2.2、多进程的作用
使用多进程可以实现多任务编程,提升程序执行效率
2.3、创建进程
步骤:
1、导入进程包
import multiprocessing
2、通过进程类创建进程对象
processObject = multiprocessing.Process(target = 任务名)
参数名 | 说明 |
---|---|
target | 执行的目标任务名,此处指函数名(也即方法名) |
name | 进程名,一般不需要设置 |
group | 进程组,目前只能使用None |
3、启动进程执行任务
processObject.start()
"""
进程创建
1、导入进程包
import multiprocessing
2、通过进程类创建进程对象
processObject = multiprocessing.Process()
3、启动进程执行任务
processObject.start()
"""
# 1、导入进程包
import multiprocessing , time
def func_A():
for i in range(3):
print("func_A被执行")
time.sleep(0.5)
def func_B():
for i in range(3):
print("func_B被执行")
time.sleep(0.5)
if __name__ == "__main__":
# 2、通过进程类创建进程对象
# target指定进程执行的函数名
process_func_A = multiprocessing.Process(target=func_A())
process_func_B = multiprocessing.Process(target=func_B())
# 3、启动进程执行任务
process_func_A.start()
process_func_B.start()
执行结果:
func_A被执行
func_A被执行
func_A被执行
func_B被执行
func_B被执行
func_B被执行
2.5、进程执行带有参数的任务
参数名 | 参数说明 |
---|---|
args | 以元组的方式给执行任务传参,当元组仅有一个参数时,元组最后必须加逗号,且元组参数的顺序必须与任务函数参数的顺序保持一致 |
kwargs | 以字典的方式给执行任务传参,字典参数顺序可变,字典key的名称就是任务函数参数的名称 |
通过args元组方式传参:
sub_process = multiprocessing.Process(target = 函数名 , args = (参数1 , 参数2 , ))
通过kwargs字典方式传参:
sub_process = multiprocessing.Process(target = 函数名 , kwargs = {key1:value1 , key2:value2})
"""
进程执行带有参数的任务
1、导入进程包
import multiprocessing
2、通过进程类创建进程对象
processObject = multiprocessing.Process()
3、启动进程执行任务
processObject.start()
"""
# 1、导入进程包
import multiprocessing , time
def func_A(counter , name):