我试图在我的程序中并行化一个函数来测量时间,但是我遇到了一个错误,我不知道如何修复它。在
代码如下:
def evolucionAutomata(automata, regla, numero_evoluciones):
if(numero_evoluciones == 0):
return 0
with Pool(4) as p:
automataEvolucionado = list(p.map(obtenerVecindario, automata, rotarDerecha(automata, 1), rotarIzquierda(automata, 1), lista_regla))**
print(automataEvolucionado)
evolucionAutomata(automataEvolucionado, regla, numero_evoluciones - 1)
def obtenerVecindario(casilla, casillaDerecha, casillaIzquierda, regla):
if( "X" in casilla ):
casillaBinaria = casilla.replace("X", "1")
if( "O" in casilla):
casillaBinaria = casilla.replace("O", "0")
if ("X" in casillaDerecha):
casillaBinariaDerecha = casillaDerecha.replace("X", "1")
if ("O" in casillaDerecha):
casillaBinariaDerecha = casillaDerecha.replace("O", "0")
if ("X" in casillaIzquierda):
casillaBinariaIzquierda = casillaIzquierda.replace("X", "1")
if ("O" in casillaIzquierda):
casillaBinariaIzquierda = casillaIzquierda.replace("O", "0")
vecindario = []
vecindario.append(casillaBinariaDerecha)
vecindario.append(casillaBinaria)
vecindario.append(casillaBinariaIzquierda)
vecindario = list(map(int, vecindario))
valorRetorno = evaluarVecindario(vecindario, regla)
return valorRetorno
rotarDerecha和rotarIzquierda函数,旋转自动机。在
错误:
^{pr2}$我从python multiprocessing documentation编写了python多处理基本示例中的多处理代码。在
提前谢谢。在
出现错误是因为
Pool.map()
只需要一个参数iterable的一个参数,但您尝试传递更多参数。在你需要把你的论点合并成一个可编辑的。此任务iterable的每个项都应包含一个函数调用的参数。然后使用
.starmap()
而不是.map()
,让它解包并将参数元组映射到目标函数参数。在Python 2.7: How to compensate for missing pool.starmap?
相关问题 更多 >
编程相关推荐