Profilando il mio codice in IPython usando% prun, ho notato che la maggior parte del tempo di funzionamento viene speso nella garbage collection (0,334 vs 0,428 tempo totale).Perché la raccolta dei rifiuti è così lenta?
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)
Ho provato disabilitazione/abilitazione della raccolta dei rifiuti prima di chiamare la funzione e dopo il ritorno suo valore, ma i tempi è praticamente identico.
import gc
gc.disable()
x = foo()
gc.disable()
Qualcuno sa perché questo è un collo di bottiglia e come accelerarlo?
versioni mio Python/panda sono elencati di seguito:
Python 2.7.11 |Continuum Analytics, Inc.| (default, Dec 6 2015, 18:57:58)
Pandas 0.17.1
Credo che il codice produce un sacco oft spazzatura. –
Suppongo che la risposta sia "no", ma puoi condividere qualsiasi codice qui? Altrimenti potresti scrivere qualcosa che mostri questo problema gc. : s –
@AndyHayden Sto ancora creando un profilo. Sembra che il collo di bottiglia sia una funzione che esegue molte regressioni. Se riesco a mettere insieme un MVE, modifico il mio post. – Alexander