Распараллеливание векторной операции Numpy

Возьмем, например,numpy.sin()

Следующий код вернет значение синуса для каждого значения массиваa:

import numpy
a = numpy.arange( 1000000 )
result = numpy.sin( a )

Но у моей машины 32 ядра, поэтому я хотел бы их использовать. (Накладные расходы могут быть нецелесообразными для чего-то вроде numpy.sin(), но функция, которую я на самом деле хочу использовать, немного сложнее, и я буду работать с огромным объемом данных.)

Это лучший (метод чтения :самый умный или быстрый )метод:

from multiprocessing import Pool
if __name__ == '__main__':
    pool = Pool()
    result = pool.map( numpy.sin, a )

или есть лучший способ сделать это?

43
задан jorgeca 2 January 2019 в 19:23
поделиться