python中 (Threading/multiprocessing)//并发、并行、单进程、多进程、单线程、多线程// ___[ 详解 ]____
简单的概念术语
并发
单核 多个任务交替进行完成;
简单理解:
一个人(相当于一个核)做饭 ,你得买菜,煮饭,切菜,炒菜 。
一个人完成整个做饭的过程。
就是为了执行完成多个任务。
并行
多个CPU同时执行任务完成;
简单理解:
做饭的时候有多个人来帮你一起,有人洗菜,有人煮饭,有人切菜,有人炒菜;提高做饭的效率
多个CPU同时协助执行提高效率。
单进程
进程的概念:一个正在打开运行中的程序就称为进程,
通俗理解就相当于QQ,微信运行起来的程序
打开后就变成了一个各自独立的进程,任务管理器中可查看,
一个运行起来的程序至少有一个进程。
多进程
多个运行起来的程序就是一个多进程;
简单理解 :
在家想做饭吃牛肉和螃蟹,为了提高效率叫表弟去买螃蟹,表妹去买虾,自己则在家里煮饭,来提高想吃饭的效率。
多任务同时执行充分调用CPU资源来提高效率。
主进程和子进程同时执行。
单线程 / 多线程
线程是程序执行的最小单位,线程是依附于进程中执行的,一个程序默认最少都会有一个线程。
简单理解:
你有一个想接满水的大盆,(线程好比水龙头)你开一个水龙头接水,和开多个水龙头接水,效率远远不一样。
就像打开QQ 后想和多个人聊天,打开多个聊天窗口(多个线程)的聊天一样,实现多任务的同时节省了资源。
multiprocessing模块-———基于进程的并行
进程的创建步骤
(1)导入进程包
#先导入包
import multiprocessing
(2)通过进程类创建进程对象
进程对象 = multiprocessing.Process()
(3)启动进程执行任务
进程对象.start()
通过进程类创建进程对象
进程对象 =multiprocessing.Process(target=任务名)
任务名就是接下来的函数名 注意的是任务名不要(),不然就是调用,这里是为了多进程的索引。
参数名 | 说明 |
---|---|
target | 执行目标的名 |
name | 进程名,默认系统设置,可手动指定 |
group | 进程组,目前None |
# 唱歌
def sing():
for i in range(3):
print('小明', end='')
print('唱歌----')
time.sleep(0.5)
# 跳舞
def dance():
for i in range(3):
print('小花', end='')
print('跳舞----')
time.sleep(0.5)
if __name__ == '__main__':
start_time= time.time() #计时
dance()
sing()
end_time = time.time()
all_time = end_time-start_time
print(f'时间:{
all_time}')
——可以看到函数的调用就是单个执行——总时间
想在快点 执行完成 。
我们再更改一下唱跳一起执行:
if __name__ == '__main__':
start_time= time.time() #开始计时
dance_process = multiprocessing.Process(target=dance,)
sing_process = multiprocessing.Process(target=sing)
dance_process.start() #启动子进程
s