python DEAP遗传算法多核速度

dva*_*val 7 python multiprocessing deap

我正在使用Python的DEAP pacakge,我希望多核我的代码,我使用http://deap.gel.ulaval.ca/doc/dev/tutorials/distribution.html上的教程成功地使用多处理来完成它.

我的问题如下:使用8个核心,理论上我获得了多少加速?我问的原因是因为我想决定我可以在与单核版本相同的时间内运行多少个人和几代人.我的代码用来运行大约200秒,有8个内核,现在需要大约0.5秒(这是400倍的加速).我可以假设任何事情都会加速400倍吗?我知道这很复杂,但非常感谢你的帮助.

一般来说,如果有人可以提供帮助,我想了解多重化如何改变计算流程.它是否只是针对每一代在不同核心上对每个人的评估进行映射?还是它并行运行几代?如果您知道我可以阅读的任何文档,请告诉我.

我没有提供代码示例,因为它似乎没有必要,因为这是一个非常高级的问题.

Joh*_*Mee 5

它是否只是为每一代在不同核心上映射每个人的评估,还是并行运行几代?

该示例映射了evaluate操作...

fitnesses = toolbox.map(toolbox.evaluate, invalid_ind)
Run Code Online (Sandbox Code Playgroud)

单独的运行进程会触及映射:所有的进程都invalid_ind被编组到一个队列中,当核心可用时,队列中的下一个人被分配到该核心来运行evaluate例程.当队列为空时,所有结果将汇总到一个列表中并分配回去fitnesses.从那以后,这个过程继续寂寞.

所以:

  • "是"它确实映射了每个人在不同核心上的评估,
  • "不"它不会并行运行几代

至少那是我在问这个问题时所猜测的.根据您的应用程序,根据我对DEAP和cProfile的经验,CPU时间的前两位消费者是评估个人和复制.