Python 在遗传规划的DEAP中使用多重处理

Python 在遗传规划的DEAP中使用多重处理,python,multiprocessing,genetic-programming,deap,Python,Multiprocessing,Genetic Programming,Deap,我正在使用DEAP库来实现遗传编程,为此我使用了eaMuCommaLambda算法。为了并行运行该程序,我按照中的说明,在if\uuuuuu name\uuuuu==“\uuuuu main\uuuu”部分添加了以下两行代码 import multiprocessing pool = multiprocessing.Pool() toolbox.register("map", pool.map) pop, log = algorithms.eaMuCommaLambda(pop, toolb

我正在使用DEAP库来实现遗传编程,为此我使用了
eaMuCommaLambda算法
。为了并行运行该程序,我按照中的说明,在
if\uuuuuu name\uuuuu==“\uuuuu main\uuuu”
部分添加了以下两行代码

import multiprocessing

pool = multiprocessing.Pool()
toolbox.register("map", pool.map)

pop, log = algorithms.eaMuCommaLambda(pop, toolbox, MU, LAMBDA, cxpb, mutpb, gen, halloffame=hof, stats=mstats, verbose=True)
eaMuCommaLambda算法的源代码中,求值操作映射如下:

fitnesses = toolbox.map(toolbox.evaluate, invalid_ind)

因此,通过将默认映射替换为pool.map,预计将并行执行求值操作。程序运行时没有错误,但它没有做任何事情。起初,我可以在任务管理器中看到几个进程启动,但很快它们的CPU使用率降至零,程序继续运行,而实际上似乎什么都没有计算。根本没有执行评估功能。代码在没有多处理的情况下运行良好,但我不确定为什么多处理不能正常工作。如果有人能提出原因,我将不胜感激。

在您的评估算法之后,请添加以下代码并尝试

pool.close()

这将确保关闭所有已启动的池


希望这能加快你的进程

添加到您的评估算法后,请添加以下代码并重试

pool.close()

这将确保关闭所有已启动的池


希望这能加快你的进程

我使用PyCharm在Windows中运行代码,似乎在交互式解释器中无法使用multi-processing.Pool。更多信息可在以下链接中找到:


通过在cmd中运行代码解决了这个问题。

我在Windows中使用PyCharm运行代码,而且似乎在交互式解释器中无法使用多处理.Pool。更多信息可在以下链接中找到:


通过在cmd中运行代码解决了这个问题。

根据您提供的代码,不进行任何计算是正常的,因为您所做的只是声明一个池对象并向工具箱注册一个函数。请提供一个简短的例子,再现您描述的行为。我编辑了这个问题。我希望现在可以澄清。根据您提供的代码,不进行任何实际计算是正常的,因为您所做的只是声明一个池对象并向工具箱注册一个函数。请提供一个简短的例子,再现您描述的行为。我编辑了这个问题。我希望现在能澄清。谢谢你的回复。我发布了解决我问题的方法。我应该尝试添加pool.close()以加快进程。谢谢您的回复。我发布了解决我问题的方法。我应该尝试添加pool.close()以加快进程。