You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When running the reproduce script below (which causes intopt to raise ValueError), traceback, frame (codename: ecyglpki.Problem.intopt (ecyglpki.c:23524)), frame (codename: _leaky) objects are leaked. (The memory leaked is actually far greater than what the output reports below, it probably does not include C allocated memory).
Examining the referrers tree, frame(_leaky) is reffered to by frame(intopt) and traceback(1). frame(intopt) is reffered to by traceback(2); and traceback(2) is referred to by traceback(1) forming a cycle. Though, Python's GC supposedly handles cycles. If you run the reproduce script with iterations set to 5, you should get a Tk GUI allowing you to browse the referrer tree to the very_leaky frame.
Output (from reproduce script below). First object listing is before running intopt (multiple times). Second is directly after it. Last listing is after running gc.collect:
From your analysis, I get the impression that you may be better skilled to find a fix for this issue, certainly because I have scant time to work on ecyglpki nowadays. I would certainly do my best to integrate such a fix.
timdiels
added a commit
to timdiels/soylent-recipes
that referenced
this issue
Jan 19, 2017
Performance: 229.6 recipes / s = 2043R / 8.9s
1.3 times slower than ecyglpki. Most of time wasted on __setitem__
instead of on actual solving.
ecyglpki has a memory leak and may be out of date. Reported bug:
equaeghe/ecyglpki#9.
When running the reproduce script below (which causes
intopt
to raiseValueError
),traceback
,frame (codename: ecyglpki.Problem.intopt (ecyglpki.c:23524))
,frame (codename: _leaky)
objects are leaked. (The memory leaked is actually far greater than what the output reports below, it probably does not include C allocated memory).Examining the referrers tree,
frame(_leaky)
is reffered to byframe(intopt)
andtraceback(1)
.frame(intopt)
is reffered to bytraceback(2)
; andtraceback(2)
is referred to bytraceback(1)
forming a cycle. Though, Python's GC supposedly handles cycles. If you run the reproduce script withiterations
set to5
, you should get a Tk GUI allowing you to browse the referrer tree to the very_leaky frame.Output (from reproduce script below). First object listing is before running intopt (multiple times). Second is directly after it. Last listing is after running gc.collect:
To reproduce:
python script.py
the script below:My CPython version: 3.5.2
pip freeze (not minimal; you probably only need pympler, numpy and ecyglpki):
The text was updated successfully, but these errors were encountered: