我需要实现的是使用库将文件列表连接到单个文件中cloudstorage
。这需要在 mapreduce 分片内进行,该分片的内存上限为 512MB,但连接的文件可能大于 512MB。
当文件大小达到内存限制时,以下代码段会中断。
list_of_files = [...]
with cloudstorage.open(filename...) as file_handler:
for a in list_of_files:
with cloudstorage.open(a) as f:
file_handler.write(f.read())
有没有办法绕过这个问题?也许以块的形式打开或附加文件?以及如何做到这一点?谢谢!
== 编辑 ==
经过更多测试,似乎内存限制仅适用于f.read()
,而写入大文件是可以的。分块读取文件解决了我的问题,但我真的很喜欢compose()
@Ian-Lewis 指出的函数。谢谢!