想象一下" heavy_thinking"做了一些繁重的计算,需要很长时间才能运行。在函数结束时,它返回它必须写入的indize以及属于那里的数据。然后将数据写入我的数组中的相应位置。
理论上,它可以大量运行并改善运行时间。实际上,虽然将大量数据移入和移出进程需要相当长的时间。
import multiprocessing
import numpy
cores = 4
def heavy_thinking(data):
# heavy thinking
return data / 4, data % 4, [data, data + 1]
if __name__ == "__main__":
calc_pool = multiprocessing.Pool(cores)
list = [0, 1, 2, 3, 4, 5, 6, 7]
array = numpy.empty([2, 4], dtype = object)
print array
data = calc_pool.map(heavy_thinking, list)
for elements in data:
array[elements[0]][elements[1]] = elements[2]
print array
calc_pool.close()
那么我还有其他选择吗?