In python2.7, a seguito della pympler example:pympler solleva TypeError
from anotherfile import somefunction, somecustomclass
from os import path, listdir
import pandas as pd
import gc
from pympler import tracker, muppy, summary
all_objects = muppy.get_objects()
print 'all objects: ', len(all_objects)
sum1 = summary.summarize(all_objects)
summary.print_(sum1)
questo è il primo codice dopo le importazioni. Ne risulta
/usr/bin/python2.7 /myprog.py
all objects: 98755
Traceback (most recent call last):
File "/myprog.py", line 12, in <module>
sum1 = summary.summarize(all_objects)
File "/usr/local/lib/python2.7/dist-packages/pympler/summary.py", line 131, in summarize
total_size[otype] = _getsizeof(o)
File "/usr/local/lib/python2.7/dist-packages/pandas/core/base.py", line 130, in __sizeof__
return super(self, PandasObject).__sizeof__()
TypeError: super() argument 1 must be type, not FrozenList
Process finished with exit code 1
Viene visualizzato lo stesso errore quando si tenta di inizializzare un oggetto SummaryTracker.
Sembra un errore in Pympler, ma il fatto che non riesca a trovarne alcuna menzione lo contraddice. Secondo il numero ufficiale documentation, "Pympler è scritto interamente in Python, senza dipendenze da librerie esterne. È stato testato con Python 2.5, 2.6, 2.7, 3.1, 3.2, 3.3, 3.4 su Linux, Windows e MacOS X." In realtà, in esecuzione solo il seguente codice con Python 2.7 in un nuovo file python non produce eventuali errori e le opere come previsto:
from pympler import muppy, tracker
tr = tracker.SummaryTracker()
tr.print_diff()
Allora, cosa mi manca?
6 febbraio 2017: l'aggiornamento dei panda ha risolto questo problema per me. –