Python线程池执行器不释放内存

时间:2017-06-16 14:55:08

标签: python linux multithreading numpy threadpool

我正在开发一个应用程序来读取视频,将其转换为图像,然后成对处理它们。由于应用程序将在Raspberry Pi上运行,因此内存不足。

如果我在一个简单的for循环中运行任务而没有Executor内存表现得很好但是如果我使用Executor调度50个作业,例如,内存会被卡在800Mb左右,而且那个chunk永远不会被释放。有问题的代码如下:

executor = ThreadPoolExecutor(max workers = 1)
future_list = []
#Read converted images from directory(around 100 images in gray scale)
images = imread_collection(image_directory)

for i in range(0,len(images)-1,2):
    img1 = images[i][:,:,0]
    img2 = images[i+1][:,:,0]
    future = executor.submit(process,xStart,yStart,xLen,yLen,img1,img2,i)
    future_list.append(future)

#Wait or all tasks to finish
executor.shutdown(wait=True)

Memory consumption without Executor

Memory consumption using ThreadPool Executor

我在发送代码之前在Mac和Linux笔记本电脑上测试了这个 覆盆子。此问题出现在Linux中,但不存在于Mac中。

0 个答案:

没有答案