python的进程相关知识

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('已经为您拷贝成功!')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行秋即离

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值