Mi è costato un'intera notte per eseguire il debug del mio codice e alla fine ho trovato questo delicato problema. Si prega di dare un'occhiata al codice qui sotto.come funziona la funzione di callback in python multiprocessing map_async
from multiprocessing import Pool
def myfunc(x):
return [i for i in range(x)]
pool=Pool()
A=[]
r = pool.map_async(myfunc, (1,2), callback=A.extend)
r.wait()
ho pensato che avrei avuto A=[0,0,1]
, ma l'uscita è A=[[0],[0,1]]
. Questo non ha senso per me, perché se ho A=[]
, A.extend([0])
e A.extend([0,1])
mi darò A=[0,0,1]
. Probabilmente la callback funziona in un modo diverso. Quindi la mia domanda è come ottenere A=[0,0,1]
anziché [[0],[0,1]]
? Grazie in anticipo per eventuali commenti.
Quale sistema operativo e versione Python stai usando? –