#python #multithreading #memory-leaks
#python #многопоточность #утечки памяти
Вопрос:
У меня есть тестовый скрипт, который запускает несколько потоков, объединяет их и проверяет резидентную память, используемую процессом:
from threading import Thread
import resource
def resident_memory() -> int:
return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss
def work():
a = 'Hello world'
a = '!!!'
def run_threads(count: int) -> None:
for _ in range(count):
t = Thread(target=work)
t.start()
t.join()
def run_workers(count: int) -> None:
for _ in range(count):
work()
while True:
print('Mem usage:', resident_memory())
run_threads(10000)
#run_workers(10000)
Кажется, что резидентная память постоянно растет, хотя я присоединяюсь к потокам.
Если я запускаю work()
функцию в основном потоке, утечка памяти не обнаруживается.
Я тестирую с помощью python 3.5.
Это известная проблема?