Profiling mein Code in IPython mit% Prun, habe ich festgestellt, dass der Großteil der Funktionszeit in Garbage Collection (0,334s vs. 0,428 Gesamtzeit) verbracht wird.Warum ist die Müllsammlung so langsam?
79254 function calls (77408 primitive calls) in 0.428 seconds
Ordered by: internal time
ncalls tottime percall cumtime percall filename:lineno(function)
5 0.334 0.067 0.334 0.067 {gc.collect}
15757 0.005 0.000 0.007 0.000 {isinstance}
1584 0.002 0.000 0.004 0.000 dtypes.py:68(is_dtype)
habe ich versucht, Sperren/Freigeben der Speicherbereinigungs vor dem Funktionsaufruf und nach seinem Wert zurückkehrt, aber das Timing ist praktisch identisch.
import gc
gc.disable()
x = foo()
gc.disable()
Weiß jemand, warum dies ein solcher Engpass ist und wie man es beschleunigen kann?
Meine Python/Pandas Versionen sind unten aufgeführt:
Python 2.7.11 |Continuum Analytics, Inc.| (default, Dec 6 2015, 18:57:58)
Pandas 0.17.1
ich Ihren Code erraten oft Müll viel produziert. –
Ich denke, die Antwort ist "Nein", aber können Sie hier irgendeinen Code teilen? Sonst könnten Sie vielleicht etwas schreiben, das dieses GC-Problem demonstriert. : s –
@AndyHayden Ich bin immer noch Profiler. Es sieht so aus, als ob der Engpass eine Funktion ist, die viele Regressionen ausführt. Wenn ich ein MVE zusammenstellen kann, werde ich meinen Beitrag bearbeiten. – Alexander