parallel.futures.ThreadPoolExecutor未释放的内存 编辑:

问题描述

我目前在我的代码中使用concurrent.futures.ThreadPoolExecutor来同时执行我的一个代码段,但是运行了一段时间后,我发现我的主进程的内存消耗增加了,只是不断增加,而没有不会被释放。

我目前正在这样使用concurrent.futures.ThreadPoolExecutor

with concurrent.futures.ThreadPoolExecutor(max_workers=10) as pool:
        processing_data = pool.map(handle_item,items_dict.values())

# Using the data in processing_data...

我已经看到其他一些人在使用此模块时遇到了内存消耗问题,但是我发现的关于SO的其他问题都使用了一些不同的方法,这似乎与我的情况无关。

如果有人知道我在这里做错了什么或如何解决,我将不胜感激

谢谢大家

编辑:

下面是一个示例代码,它再现了潜在的内存泄漏:

#!/usr/bin/env python3

import os
import time
import psutil
import random
import concurrent.futures

from memory_profiler import profile as mem_profile

p = psutil.Process(os.getpid())

def do_magic(values):
    return None

@mem_profile
def foo():
    a = {i: chr(i) for i in range(1024)}
    with concurrent.futures.ThreadPoolExecutor(max_workers=10) as pool:
        proccessed_data = pool.map(do_magic,[1,2,3,4,5,6,7,8,9,10])

def fooer():
    while True:
        foo()
        time.sleep(1)

fooer()

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)