python大矩阵内存交换的问题

遇到问题记录(待解决):

  • 大矩阵(4960x8976)进行旋转90°时,耗时长。np.rot90()很快,但需要加个copy()后面才能调用,45ms cv2.transpose() + cv2.flip 39ms + 2ms
  • 调用cpp封装的so,传入img(u8指针);如果输入的img=np.rot90(img)则该进程就会阻塞(报错)。
  • 解决: 传入C程序的矩阵(指针)需要两个特点:align 、continuous,所以需要copy();将输入用 numpy.ctypeslibs进行定义而不是ctypes,就会报错;而用ctypes定义指针则不会报错,但该进程会被阻塞。
  • multiprocessing .shared_memory.SharedMemory 好用是好用,但对于二维数组 shm_img[:,:]=img[:,:] 同np.copyto(shm_img,img)比较慢,100ms了。
  • Queue()进行通信,加入大矩阵同样遇到慢的问题,强行让进程变慢了。
  • 多进程调用gpu时,子进程内初始化没问题。主进程初始化,子进程调用会出问题,即使加了设置"spawn"也会出错。还没试传参形式传递已初始化的类。

你可能感兴趣的:(每日记录,矩阵,python,线性代数)