Python 利用多核的力

Python 利用多核的力,python,linux,multiprocessing,Python,Linux,Multiprocessing,所以我有一个可执行文件,我需要用不同的输入参数运行多次。每次运行大约需要一个小时,我注意到在整个一小时内,8个内核中只有1个的CPU利用率为100%,其余的都处于空闲状态 是否有可能产生4-5个进程,每个进程使用不同的核心并使用不同的参数?这是惯例吗?这是我第一次为多核而烦恼,所以如果有任何其他事情我需要知道,请告诉我 目前,我正在使用Python运行并等待此可执行文件完成。在运行并行进程时,应考虑共享资源,并且根据负载配置文件,它可能比单个进程快,也可能不快(例如,如果瓶颈不是cpu) 常见的

所以我有一个可执行文件,我需要用不同的输入参数运行多次。每次运行大约需要一个小时,我注意到在整个一小时内,8个内核中只有1个的CPU利用率为100%,其余的都处于空闲状态

是否有可能产生4-5个进程,每个进程使用不同的核心并使用不同的参数?这是惯例吗?这是我第一次为多核而烦恼,所以如果有任何其他事情我需要知道,请告诉我


目前,我正在使用Python运行并等待此可执行文件完成。

在运行并行进程时,应考虑共享资源,并且根据负载配置文件,它可能比单个进程快,也可能不快(例如,如果瓶颈不是cpu)

常见的问题通常与“竞争条件”和死锁有关,前者是指两个进程处理相同的数据时,彼此不了解,从而导致数据因例如覆盖而损坏


由于不了解有关任务的更多详细信息,因此在运行并行进程时不可能准确回答。应考虑共享资源,此外,根据负载配置文件,它可能比单个进程快,也可能不快(例如,如果瓶颈不是cpu)

常见的问题通常与“竞争条件”和死锁有关,前者是指两个进程处理相同的数据时,彼此不了解,从而导致数据因例如覆盖而损坏


由于不知道任务的更多细节,因此不可能准确回答您所描述的问题。编译大型程序时,通常会执行这些操作—生成多个编译器进程,处理不同的文件


如果您的程序看起来是CPU受限的,那么输入数据很容易划分,并且在编写结果时各种实例不会互相践踏,那么您可以尝试看看是否获得了预期的加速

在编译大型程序时,您所描述的通常都是这样做的——多个编译器进程生成,处理不同的文件


如果您的程序看起来是CPU受限的,那么输入数据很容易划分,并且在编写结果时各种实例不会互相践踏,那么您可以尝试看看是否获得了预期的加速

如前所述,一种方法是在应用程序中对输入集进行分区,并使用多处理模块并行处理

或者,您可以预先对输入进行分区,并使用GNU并行或良好的旧xargs(查看-n和-p选项)在输入上运行程序的多个副本

如果需要的话,还存在将结果合并到一起的问题


所有这一切都取决于能否将输入分割成可以独立处理的部分,而无需协调或共享内存。否则它会变得更复杂。

一种方法,正如已经提出的那样,是在应用程序中对输入集进行分区,并使用多处理模块并行处理

或者,您可以预先对输入进行分区,并使用GNU并行或良好的旧xargs(查看-n和-p选项)在输入上运行程序的多个副本

如果需要的话,还存在将结果合并到一起的问题


所有这一切都取决于能否将输入分割成可以独立处理的部分,而无需协调或共享内存。否则它会变得更复杂。

取决于资源是否可共享。如果它们有一个公共的外部源,这可能会很困难,但是如果没有更多的信息,就很难说了。您应该尝试使用
多处理
模块(由于Python全局解释器锁,不能为CPU绑定的进程线程化),这取决于资源是否可共享。如果它们有一个公共的外部源,这可能会很困难,但是如果没有更多的信息,就很难说了。您应该尝试使用
多处理
模块(由于Python全局解释器锁的原因,不能为CPU绑定的进程线程化)