【问题标题】:map, then iterate - why?映射,然后迭代 - 为什么?
【发布时间】:2013-08-26 14:05:04
【问题描述】:

DEAP example(Python框架)中有一段代码:

# Evaluate the entire population
fitnesses = list(map(toolbox.evaluate, pop))
for ind, fit in zip(pop, fitnesses):
    ind.fitness.values = fit

为什么他们使用map,然后使用for?为什么不只是:

for ind in pop:
    ind.fitness.values = toolbox.evaluate(ind)

【问题讨论】:

  • 我能想到的唯一原因是,在分配给任何ind.fitness.values 之前,评估对toolbox.evaluate() 的所有调用可能很重要。也许是并发问题?还是分配有副作用?
  • 可能只是破解代码的剩余部分。也许在旧版本中,有两行之间使用fitnesses 用于不同目的。

标签: python for-loop coding-style iteration


【解决方案1】:

我是 DEAP 开发人员之一。

我们使用地图,以便我们可以通过将地图替换为并行地图来轻松并行化评估。

在后面的示例中,我们使用了一个工具箱,其中注册了一个地图(__buitins__.map),可以用multiprocessing.Pool.mapscoop.futures.map 替换。您可以查看文档以了解如何分发评估here

【讨论】:

  • 抱歉,链接失效了。你能更新链接吗?谢谢你的帮助。
  • @ZongzeWu 完成!
猜你喜欢
  • 2021-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-26
  • 2021-04-15
  • 2011-07-31
  • 1970-01-01
相关资源
最近更新 更多