所以我有一个可执行文件,我需要使用不同的输入参数运行多次。每次运行大约需要一个小时,我注意到在整个小时内,只有1个核心的CPU利用率为100%,其余的都是闲置的。
是否有可能产生4-5个进程,每个进程使用不同的核心并处理不同的参数?这是常见做法吗?这是我第一次烦扰多个内核,所以如果还有其他事情我需要注意,请告诉我。
目前我正在使用Python运行并等待此可执行文件完成。
答案 0 :(得分:2)
您编写的内容是在编译大型程序时常规完成的 - 生成多个编译器进程,处理不同的文件。
如果您的程序看起来像CPU一样,输入数据很容易分区,并且在编写结果时各种实例不会踩在彼此的脚上,您可以尝试查看是否获得了预期的加速。
答案 1 :(得分:1)
当运行并行进程时,应考虑共享资源,加上依赖于负载配置文件,它可能比单个进程更快或更快(例如,如果瓶颈不是cpu)
常见问题通常与“竞争条件”和死锁有关,前者是两个进程使用相同数据而不知道彼此的情况,以便数据因覆盖而被破坏,例如
不知道有关任务的更多细节,无法准确回答
答案 2 :(得分:1)
如前所述,解决此问题的一种方法是在应用程序中对输入集进行分区,并使用多处理模块并行处理它。
或者,您可以预先对输入进行分区,并使用GNU并行或旧的xargs在输入上运行程序的多个副本(查看-n和-P选项)。
如果需要,还有将结果合并在一起的问题。
所有这一切都取决于能否将输入分成可以独立处理的部分,而无需协调或共享内存。否则会变得更复杂。