Я попытался запустить параллельную обработку локально определенной функции следующим образом:
import multiprocessing as mp
import numpy as np
import pdb
def testFunction():
x = np.asarray( range(1,10) )
y = np.asarray( range(1,10) )
def myFunc( i ):
return np.sum(x[0:i]) * y[i]
p = mp.Pool( mp.cpu_count() )
out = p.map( myFunc, range(0,x.size) )
print( out )
if __name__ == '__main__':
print( 'I got here' )
testFunction()
Когда я это делаю, я получаю следующую ошибку:
cPickle.PicklingError: Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
Как я могу использовать многопроцессорность для параллельной обработки нескольких массивов, как я пытаюсь сделать здесь? x и y обязательно определены внутри функции; Я бы предпочел не делать их глобальными переменными.
Вся помощь приветствуется.
pool.starmap
, если у вас несколько параметров 22.05.2019