Python 使用多进程池和任务

并发是一种非严格求值形式,即无法预知操作的实际顺序。multiprocessing包引入了Pool对象的概念。一个Pool对象包含许多工作进程,且这些进程能并发执行。这个包允许操作系统调度和时间分片交错地执行多个进程,旨在使整个系统尽可能地满负荷运作。

为了充分利用这种功能,需要将应用程序分解为支持非严格执行的组件。整个应用程序必须由能以非确定顺序处理的离散任务来构建。

例如,一个通过网页抓取从互联网收集数据的应用通常可以通过并行处理实现优化。我们可以创建一个具有多个同等worker的Pool对象来进行网站抓取。URL形式的任务分配给每个worker供其分析。

分析多个日志文件的应用也能实现并行化。可以创建一个包含分析worker的Pool对象,将每个日志文件分配给一个分析worker,这就使得Pool对象中各个worker能并行地进行读取和分析。每个worker都会执行I/O和计算,但一个worker可以在其他worker等待I/O完成的同时执行分析。

由于性能获益取决于时间难以预测的输入和输出操作,因此往往需要对多进程进行大量试验。改变工作池的大小和测量运行时间是设计并发应用程序的重要部分。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程