1.多任务
1.1电脑中的多任务
比如同时下载好几个文件:
多任务的概念:在同一时间内执行多个任务
1.2 多任务的两种表现形式
并发:在一段时间交替去执行多个任务
比如:对于单核的CPU处理多任务,操作系统会轮流的让各个任务交替去执行,但是交替速度非常快
并行:在一段时间内真正的同时一起执行多个任务
对于多核的CPU处理任务,操作系统会给CPU每个内核安排一个任务执行,多个内核是真正的一起执行多个任务,这里需要注意的是多核CPU是并行的执行多任务,始终有多个任务一起执行
2、进程的介绍
2.1、程序中实现多任务的方式
在python中,想要实现多任务可以使用多线程来完成
2.2、进程的概念
注意:一个运行的程序至少有一个进程
2.3多进程的作用
3、多进程完成多任务
3.1进程的创建步骤
3.2 通过进程类创建进程对象
实例:
单进程代码,会运行3秒左右:
在导入了多进程包之后的代码,只需要执行1.5s就完成了:
4、执行带有参数的任务
4.1args参数的使用
注意:元组的参数顺序和原来函数的参数顺序要一致
4.2kwargs参数的作用
这里使用的是需要注意,传入字典的key是参数的名字,value是参数的值
4.3进程的编号
4.3.1方式一:获取当前进程编号:
os.getpid()
4.3.2方式二:获取当前子进程编号:
os.getppid()
我们再在上面的两个函数进行增加代码,输出父进程的代码:
输出结果如下:
5、进程注意点
案例:
我们发现,即使主进程运行结束了,但是子进程还在继续运行,这里我们需要设置一个守护主进程
这样就能保证主进程关闭了,子进程就不会再后台运行了
7、总结
案例:文件的并发copy
任务分析
拷贝文件函数的实现
全部代码
import os
import multiprocessing
def copy_file(file_name, source_dir, dest_dir):
source_path = source_dir + '\\' + file_name
dest_path = dest_dir + '\\' + file_name
with open(source_path, 'rb') as source_file:
with open(dest_path, 'wb') as dest_file:
while True:
data = source_file.read(1024)
if data:
dest_file.write(data)
else:
break
def main():
source_dir = 'D:\\AAAAAAAAAAAAA\\eye'
dest_dir = 'D:\\AAAAAAAAAAAAA\\eyepursuit'
try:
os.mkdir(dest_dir)
except:
print('目标文件夹存在')
file_list = os.listdir(source_dir)
for file_name in file_list:
copy_file(file_name, source_dir, dest_dir)
# 使用多进程实现多任务拷贝
sub_process = multiprocessing.Process(target=file_name, args=(file_name, source_dir, dest_dir))
sub_process.start()
main()
print('已经为您拷贝成功!')