我有一个测试脚本,它启动多个线程,加入它们并检查进程使用的驻留内存:
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进行测试。
这是一个已知的问题吗?