[issue44697] Memory leak when asyncio.open_connection raise
Artem
report at bugs.python.org
Wed Jul 21 09:46:19 EDT 2021
New submission from Artem <doomedseer at GMail.com>:
I write some short example.
import resource
import asyncio
class B:
def __init__(self, loop):
self.loop = loop
self.some_big_data = bytearray(1024 * 1024) # 1Mb for memory bloating
async def doStuff(self):
if not await self.connect():
return
print('Stuff done')
async def connect(self) -> bool:
try:
_, writer = await asyncio.open_connection('127.0.0.1', 12345, loop=self.loop)
writer.close()
return True
except OSError as e:
pass
return False
class A:
def __init__(self, loop):
self.loop = loop
async def doBStuff(self):
b = B(self.loop)
await b.doStuff()
async def work(self):
print('Working...')
for _ in range(1000):
await self.loop.create_task(self.doBStuff())
print('Done.')
print(
'Memory usage {}kb'.format(
resource.getrusage(
resource.RUSAGE_SELF).ru_maxrss))
async def amain(loop):
a = A(loop)
await a.work()
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(amain(loop))
100 cycles
"Memory usage 41980kb"
1000 cycles
"Memory usage 55412kb"
10000 cycles
"Memory usage 82880kb"
And so on...
Does anyone know workaround?
----------
components: asyncio
messages: 397945
nosy: aeros, asvetlov, seer, yselivanov
priority: normal
severity: normal
status: open
title: Memory leak when asyncio.open_connection raise
type: resource usage
versions: Python 3.6
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue44697>
_______________________________________
More information about the Python-bugs-list
mailing list