gpt4 book ai didi

python - pympler 引发 TypeError

转载 作者:太空狗 更新时间:2023-10-29 21:08:17 31 4
gpt4 key购买 nike

在python2.7中,跟随pympler example :

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)

这是导入后的第一个代码。结果是

/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

我在尝试初始化 SummaryTracker 对象时遇到同样的错误。

它看起来像是 Pympler 中的错误,但我找不到任何提及它的事实与此相矛盾。据官方documentation , “Pympler 完全用 Python 编写,不依赖于外部库。它已经在 Linux、Windows 和 MacOS X 上用 Python 2.5、2.6、2.7、3.1、3.2、3.3、3.4 进行了测试。”事实上,在新的 python 文件中仅使用 python 2.7 运行以下代码不会产生任何错误并按预期工作:

from pympler import muppy, tracker

tr = tracker.SummaryTracker()
tr.print_diff()

那我错过了什么?

最佳答案

好像是pandas库的问题。我通过编辑库代码解决了它。错误轨迹指示您哪一行是错误的:

File "/usr/local/lib/python2.7/dist-packages/pandas/core/base.py", line 130, in __sizeof__ 
return super(self, PandasObject).__sizeof__()

你只需要像这样改变参数的顺序:

return super(PandasObject, self).__sizeof__()

我做到了,我的程序能够正常运行。

关于python - pympler 引发 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37613792/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com