+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2020-03(72)

2020-04(55)

2020-05(24)

2020-06(36)

2020-07(25)

python的进程相关知识

发布于2021-01-13 21:19     阅读(295)     评论(0)     点赞(5)     收藏(1)


0

1

2

3

4

5

6

7

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('已经为您拷贝成功!')

0

1

2

3

4

5

6

7

8



所属网站分类: 技术文章 > 博客

作者:吃点豆皮子

链接: https://www.pythonheidong.com/blog/article/764462/dbe136a66765a55c1a52/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

5 0
收藏该文
已收藏

评论内容:(最多支持255个字符)