在我的工作中,我正在创建许多multiprocessing.RawArray
对象,并在我的流程中使用它们(即,用一些已加载图像的内容填充它们)。在某个时候,我不再需要那些RawArray
对象。这是我的工作流管道,显示了如何创建RawArray
对象:
import multiprocessing as mp
import numpy as np
readProcesses = []
sharedArr = []
for i, imagePath in enumerate(imagePaths):
sharedArr.append(mp.RawArray('f', 3*64*64))
readProcesses.append(Process(target=readFile, kwargs={'filePath': imagePath, 'sharedArr': sharedArr, 'sharedArrIndex': i}))
readProcesses[-1].start()
for proc im readProcesses:
proc.join()
def readFile(filePath, sharedArr, sharedArrIndex):
numpyImg = readAnImageAsNumpyArray(filePath)
processBuffer = np.reshape(np.frombuffer(sharedArr[sharedArrIndex], dtype=np.float32), 3*64*64)
processBuffer[:] = numpyImg
但是我想知道取消引用它们并让Python进行垃圾回收以释放内存的最佳方法是什么?我是否应该简单地通过遍历共享内存对象(即RawArray
)的for循环并将它们设置为None或如下所示?
for sharedMemObj in sharedArr:
sharedMemObj = None