我有一个远程API调用返回的字典排序列表(响应小于4 MB。) 我想将这个列表拆分成块,其中MAX允许的单块大小为1 MByte。 *
结果列表需要保留初始排序;然后这些块将被序列化(通过Pickle)并放入具有1 MByte MAX大小的不同Blob字段。
使用Python 2.5实现这一目标的最快代码是什么?
*块的数量应该是适合1MByte约束的最低值
答案 0 :(得分:1)
跟进我的评论。您可以使用this extension。 以下脚本。假设这不会优化块的大小。它只能确保它们都不大于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)会很有趣。
答案 1 :(得分:0)
我找到了pympler库,asizeof
模块提供了使用Python 2.2.3,2.3.7,2.4.5,2.5.1,2.5测试的一个或多个Python对象的基本大小信息。 2,2.6。