Python 在遗传规划的DEAP中使用多重处理
我正在使用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
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()以加快进程。