Skip to main content
 首页 » 编程设计

python之如何将列表拆分为大小小于 1MByte 的部分

2025年05月04日14飞鱼

我有一个由远程 API 调用返回的字典的排序列表(通常响应小于 4 MByte。
我想将此列表分成多个 block ,其中结果单个 block 的最大允许大小为 1 MByte。*

结果 block 列表需要保留初始排序;然后这些 block 将被序列化(通过 Pickle)并放入不同的 Blob 字段中,最大大小为 1 MByte。

使用 Python 2.5 实现该目标最快的代码是什么?

* block 的数量应该是符合 1MByte 限制的最低数量

请您参考如下方法:

跟进我的评论。你可以使用 this extension . 以及以下脚本。假设这不会优化 block 的大小。它只保证它们都不大于 MAX

from sizeof import asizeof 
 
matrix=[] 
new_chunk = [] 
size_of_current_chunk = 0 
for x in your_sorted_list: 
    s = asize(x) 
    if size_of_current_chunk + s > MAX: 
        matrix.append(new_chunk) 
        size_of_current_chunk = 0 
        new_chunk = [] 
    size_of_chunk += s 
    new_chunk.append(x) 
 
if len(new_chunk): 
    matrix.append(new_chunk) 

元素 matrix 将包含每个对象中少于 MAX 字节的对象列表。

衡量 asize 的性能与仅将对象编码为 json 字符串并将 json 字符串乘以 sizeof(char) 的性能会很有趣。