[New-bugs-announce] [issue37909] Thread pool return ref hold memory

Tianshu Gao report at bugs.python.org
Wed Aug 21 16:55:03 EDT 2019


New submission from Tianshu Gao <tgtianshugao at gmail.com>:

This is very similar to issue35715. But this is happen for thread.

After the func in thread finished, the memory is still hold and accumulate.

import asyncio
import time
import concurrent
import threading

loop = asyncio.get_event_loop()

def prepare_a_giant_list():
    m = []
    for i in range(1000*1000):
        m.append("There's a fat fox jump over a sheep" + str(i))

    th_num = threading.active_count()
    print("Thread number is {}".format(th_num))
    return m

@asyncio.coroutine
def main():
    global loop
    global counter
    async_executor = concurrent.futures.ThreadPoolExecutor(max_workers=20)
    loop.run_in_executor(async_executor, prepare_a_giant_list)
    time.sleep(15)
    loop.run_in_executor(async_executor, prepare_a_giant_list)
    time.sleep(15)
    loop.run_in_executor(async_executor, prepare_a_giant_list)
    time.sleep(15)
    loop.run_in_executor(async_executor, prepare_a_giant_list)
    time.sleep(15)

if __name__ == "__main__":
    loop.run_until_complete(main())
    loop.close()

----------
components: asyncio
messages: 350108
nosy: Tianshu Gao, asvetlov, yselivanov
priority: normal
severity: normal
status: open
title: Thread pool return ref hold memory
type: resource usage
versions: Python 3.5

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue37909>
_______________________________________


More information about the New-bugs-announce mailing list