Python多处理池.map()发行

2024-10-01 04:55:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码,在一个循环中执行很多独立的任务,我想把它转换成多处理来加速它。我设法用这种方式在代码的其他地方加速了另一个循环任务,这一个看起来非常相似。但是,它无法给出以下错误:

    File "Z:\Blade Test KTP\BladeTestOptimisationSoftware\python\source\SteadyStateMP.py", line 2196, in <module>
    x0,FitnessTracker=GAMainFunc(GAPopulation,GAGeneration,Crossover,Mutation,FitnessScaling,SwapVariables,Bounds,Args+(False,))
    File "Z:\Blade Test KTP\BladeTestOptimisationSoftware\python\source\SteadyStateMP.py", line 1480, in GAMainFunc
    result = pool.map(func,PopulationList)
    File "C:\Python27\lib\multiprocessing\pool.py", line 251, in map
    return self.map_async(func, iterable, chunksize).get()
    File "C:\Python27\lib\multiprocessing\pool.py", line 558, in get
    raise self._value
    NameError: global name 'NodesList' is not defined

不幸的是,一个可运行的例子是不可行的,因为代码的数量,输入文件的大小,事实上,我会在把它放到公共领域的麻烦。。。我也没有设法在更小的范围内复制这个问题(正如我上面提到的,我在别处成功地实现了多处理,并且我使代码非常相似)。我的代码结构如下所示:

^{pr2}$

这种方法的非并行实现很好地工作(字面意思是替换池.map()与itertools.map()或循环)。在我的数组中成功地使用了一个数组和一个成功的数组之间的差异。我避免使用像瘟疫这样的全局变量,所以python会建议我使用它们,这让我感到很侮辱!最奇怪的是,我可以在OptimFunc内部打印NodesList,然后再将其用于愤怒。如果有任何帮助,我们将不胜感激!在


Tags: 代码inpytestmapsourceline数组