concurrent.futures.ThreadPoolExecutor неизданная память

#python #concurrency #memory-leaks #concurrent.futures

#python #параллелизм #утечки памяти #concurrent.futures

Вопрос:

В настоящее время я использую 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()