过程:该过程正在执行,由程序,数据和过程控制块组成。这是正在执行的过程。该程序的过程是资源调度的基本单位。
程序:无执行的代码是静态的。
从图可以看出:目前,计算机中有9个应用程序过程,但是一个过程将对应于多个线程。可以得出结论:
过程:可以完成多个任务,一台计算机可以同时运行多个QQ
线程:可以完成多个任务,QQ中的多个聊天窗口
基本差异:该过程是操作系统资源分配的基本单位,线程是任务调度和执行的基本单位。
使用多过程的优点:
1.拥有独立的吉尔:
首先,由于该过程中存在GIL,Python中的多线程线程无法发挥多核优势。该过程中的多个线程只能同时运行一个线程。对于多过程,每个过程都有自己的GIL,因此在多核处理器下,多进程的操作将不会影响GIL的影响。因此,多过程可以更好地发挥多核的优势。
2.高效率
当然,对于爬虫的IO密集型任务,多线程和多过程的影响很小。对于计算密集的任务,Python的多进程与多线程相比,其多核操作效率将翻倍。
让我们以一个例子来感受:
3.1使用过程类
这是实现多过程的最基本方法:通过创建一个过程来创建新的子过程。其中的参数对应于一个-to -One。
注意:这里的args必须是元组。如果只有一个参数,则还必须在第一个元素的第一个元素之后添加逗号。如果没有逗号,它与不能构成元组的单个元素本身没有什么不同,从而导致参数传输。提示。创建过程后,我们可以通过调用start方法来启动该过程。
运行结果如下:
可以看出,我们运行5个子过程,每个过程调用该过程。过程方法的索引参数通过进程的ARGS传递,即5个序列号为0?4,最后打印了它们。
3.2继承该过程
我们首先声明一种建设性方法。该方法接收一个循环参数,表示周期的数量,并将其设置为全局变量。在运行方法中,循环变量用于循环循环时间并打印当前的过程编号和周期数。
调用时,我们使用范围方法获得2、3和4个数字,并初始化它们以初始化myProcess过程,然后调用开始方法开始该过程。
注意:此处的过程的执行逻辑需要在运行方法中实现。开始过程需要调用开始方法。通话后,将执行运行方法。
运行结果如下:
请注意,此处的过程PID代表过程编号,不同机器和不同时间的结果可能不同。
4.1排队首先先进
4.2共享全球变量不适合多进程编程
操作结果:
可以看出,全局变量未共享;
5.1当需要创建的子过程数量的数量不多时,进程池的引入不多,您可以直接在多处理中使用该处理来动态生成多个进程,但是如果它是数百甚至数千个目标,则工作负载手动创建过程是巨大的。您可以不时地使用多处理模块提供的池方法。
操作结果:
一个进程池只能容纳3个进程,并且可以完成执行以添加新任务。它在连续打开和释放的过程中得到回报。
操作想法:
代码显示如下:
指南袋
自定义文件复制功能
定义主函数
程序运行
运行结果如下图所示:
运行前后文件目录结构的比较
运行前
运行后
以上内容是一般结果。由于测试文件在测试中随意粘贴,因此在此处未启动演示。
本文结束了。
资料来源:公共号码[Jie GE的IT之旅]
作者:阿拉斯加
id:jake_internet