当前位置: 首页 > 网络应用技术

使用Python实现多任务处理过程

时间:2023-03-07 10:58:24 网络应用技术

  过程:该过程正在执行,由程序,数据和过程控制块组成。这是正在执行的过程。该程序的过程是资源调度的基本单位。

  程序:无执行的代码是静态的。

  从图可以看出:目前,计算机中有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