【发布时间】:2018-10-30 14:24:57
【问题描述】:
有一个 2d numpy 数组,我正在执行以下操作:
rows_count = matrix.shape[0]
mr = []
for i in range(0, rows_count-1):
for j in range(i+1, rows_count):
mr.append(matrix[i,:] ^ matrix[j:])
这正是我想要的,但对于大型输入数组来说太慢了。这就是为什么我想使用multiprocessing 来加速我的代码:
import multiprocessing as mp
import numpy as np
pool = mp.Pool(mp.cpu_count())
mr = pool.map(np.bitwise_xor,[(matrix[i,:],matrix[j,:]) for i in range(0, rows_count-1) for j in range(i+1, rows_count)])
pool.join()
pool.close()
但是,此代码的运行速度要慢几倍。如何正确使用multiprocessing(或其他概念)来加速我的代码?
【问题讨论】:
-
查看 Joblib,它使share Numpy arrays across processes by memory-mapping 变得容易。
标签: python python-3.x numpy python-multiprocessing