gpt4 book ai didi

python - PyPy 中是否有替代 sys.getsizeof() 的方法?

转载 作者:太空狗 更新时间:2023-10-30 01:19:57 25 4
gpt4 key购买 nike

我正在尝试使用 PyPy 运行 Python (2.7) 脚本,但我遇到了以下错误:

TypeError: sys.getsizeof() is not implemented on PyPy.

A memory profiler using this function is most likely to give results
inconsistent with reality on PyPy. It would be possible to have
sys.getsizeof() return a number (with enough work), but that may or
may not represent how much memory the object uses. It doesn't even
make really sense to ask how much *one* object uses, in isolation
with the rest of the system. For example, instances have maps,
which are often shared across many instances; in this case the maps
would probably be ignored by an implementation of sys.getsizeof(),
but their overhead is important in some cases if they are many
instances with unique maps. Conversely, equal strings may share
their internal string data even if they are different objects---or
empty containers may share parts of their internals as long as they
are empty. Even stranger, some lists create objects as you read
them; if you try to estimate the size in memory of range(10**6) as
the sum of all items' size, that operation will by itself create one
million integer objects that never existed in the first place.

现在,我真的需要在程序执行期间检查一个嵌套字典的大小,除了可以在 PyPy 中使用的 sys.getsizeof() 之外,还有其他选择吗?如果不是,我将如何检查 PyPy 中嵌套对象的大小?

最佳答案

或者,您可以使用

来衡量进程的内存使用情况
import resource
resource.getrusage(resource.RUSAGE_SELF).ru_maxrss

当您的程序正在执行时,getrusage 将以字节数或千字节数给出进程的总内存消耗。使用此信息,您可以估计数据结构的大小,如果您开始使用机器总内存的 50%,那么您可以采取一些措施来处理它。

关于python - PyPy 中是否有替代 sys.getsizeof() 的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42562838/

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