[issue43911] Queue.get() memory leak
Jens
report at bugs.python.org
Fri Apr 23 08:36:19 EDT 2021
Jens <multiks2200 at gmail.com> added the comment:
So this got me thinking of trying to use some other linked list implementations.
I've used a llist library - https://github.com/ajakubek/python-llist
Using their doubly linked list implementation:
class DllistQueue(queue.Queue):
def _init(self, maxsize):
self.queue = dllist()
Results are:
>del_after_puts False del_after_gets True n_puts 20000000
>before run
>mem_pct 0.15%
>------ put done ----- qsize 20000000
>mem_pct 55.34%
>------ gets done ----- qsize 0
>mem_pct 0.15%
>deleting queue after gets <__main__.DllistQueue object at 0x7f494ba91450>
>mem_pct 0.15%
>time elapsed 0:02:17.642700
Using their singly listed list implementation:
class SllistQueue(queue.Queue):
def _init(self, maxsize):
self.queue = sllist()
results are:
>del_after_puts False del_after_gets True n_puts 20000000
>before run
>mem_pct 0.15%
>puting 0 qsize 0
>------ put done ----- qsize 20000000
>mem_pct 55.34%
>------ gets done ----- qsize 0
>mem_pct 0.15%
>deleting queue after gets <__main__.SllistQueue object at 0x7ff07bf484d0>
>mem_pct 0.15%
>time elapsed 0:02:03.495047
I have not dived in how their C implementations differ from deque, but it seems to use more memory and it's slower, but it does not seem to leak at all.
Thanks
----------
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue43911>
_______________________________________
More information about the Python-bugs-list
mailing list