我必须下载object_x
。为简单起见,object_x
包含一系列integers
加起来1000
。下载不规范。我以看似随机的顺序接收群组或chunks
整数,并且我需要跟踪它们,直到我完成所有1000
来构成最终object_x
。
传入的块也可以重叠,例如:
Chunk 1: integers 0-500
Chunk 2: integers 600-1000
Chunk 3: integers 400-700
将object_x
创建为list
,其中包含所有包含整数的0-1000
。下载chunk
后,从chunk
中删除构成object_x
的所有整数。继续这样做,直到object_x
为空(已知完成)。
object_x = range(0,1000)
# download chunk 1
chunk = range(0, 500)
for number in chunk:
if number in object_x:
object_x.remove(number)
# repeat for every downloaded chunk
此方法非常耗费内存。如果object_x
或chunk
太大,脚本会抛出MemoryError。
我正在寻找一种更好的方法来跟踪构建object_x
的块。有任何想法吗?我使用的是Python,但语言并不重要。
答案 0 :(得分:0)
这是一种流媒体非常重要的场景。在内存中做所有事情是一个坏主意,因为你可能没有足够的内存(如你的情况)。您应该将块保存到磁盘,跟踪下载的数量,当达到1000时,在磁盘上处理它们(或者逐个加载到内存中来处理它们)。
“C# Security: Computing File Hashes”是我最近写的一篇文章 - 它是一个不同的主题,但它确实说明了流式传输的重要性。