【问题标题】:Python Large bytearray MemoryPython 大字节数组内存
【发布时间】:2014-07-21 01:38:45
【问题描述】:

假设我创建了一个大字节数组。让我们说 1000000 字节或总共 1mb。解释器是在内存中保留 1mb 还是在填充字节数组时使用内存。意思是 1000000 字节的大部分为空的字节数组在内存中使用了 1mb 吗?

【问题讨论】:

    标签: python memory bytearray


    【解决方案1】:

    我认为它是在施工时分配/保留的。在我的系统上,下面这行代码会将解释器的内存使用量增加约 100MB。

    b = bytearray(1024*1024*100)
    

    如果文档没有提到它,我猜它取决于实现。

    【讨论】:

      【解决方案2】:

      sys.getsizeof 返回对象的大小(以字节为单位):

      In [242]: sys.getsizeof(bytearray(10**6))
      Out[242]: 1000025
      

      所以bytearray(10**6) 确实使用了大约 1MB 的空间。

      请注意,虽然sys.getsizeof 给出了字节数组的准确答案,但如果应用于列表等容器,它只给出容器的大小,不包括容器的内容。

      如果您需要计算包括其内容在内的对象的大小,可以使用a recipe(在the docs 中引用)。

      【讨论】:

        猜你喜欢
        • 2020-02-13
        • 2012-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-06
        • 1970-01-01
        相关资源
        最近更新 更多