0

我有兴趣应用Python多处理模块(或任何合适的等价物)来加速独立处理多个数据文件。目前,处理代码在单个内核上是CPU限制的,即100%cpu,直到完成。独立作业的多核处理

我有许多数据文件,每个数据文件都需要一些简单但相对CPU密集的处理操作。处理操作已被转换为一个单独的函数,该函数将处理文件和其他一些参数。由于每个处理操作完全独立,多核处理似乎是一个完美的解决方案。

我见过在多处理模块中使用Process和Queue方法的各种示例,但如果我诚实地说,我真的不知道如何将它们应用于我的问题。本质上,我想使用我的机器中的所有8个内核来使用作业排队系统咀嚼处理操作。开始时,同时处理8个文件,每个核心处理1个文件。当其中一个内核完成其处理操作时,我希望它处理队列中的下一个文件。该循环继续,直到处理完所有文件。由于处理操作是独立的,因此不需要进行任何跨线程通信。

有没有人有一个简单的例子来说明如何在Python中做到这一点?

感谢

+0

这可能是一个很好的阅读:https://www.praetorian.com/blog/multi-core-and-distributed-programming-in-python – Dyrborg

+0

https://mikecvet.wordpress.com/2010/ 07/02/parallel-mapreduce-in-python /可能会给你一些很好的线索。 – boardrider

回答

0

如果你不反对外部亚军和其相关的开销,一个可能的选择是使用一个任务队列,如Celery。它包含了所有需要的机器。你只需要将你的单个工作单元包装在@task修饰器中并将它们排入队列。

+0

感谢您的回复。我希望尽可能使用“标准”Python。即尽量减少外部包裹,如跑步者 – Mark