Python 将10G文件读入云端内存

Python 将10G文件读入云端内存,python,azure,memory,Python,Azure,Memory,我正在Azure上工作。我有一个10G文件要读入内存。所有这些文件都是以制表符分隔的文件或带有分隔符的.dat文件。我可以灵活地创建一个用于读取和处理这些文件的计算环境。如何找到最佳设置,以便在中读取文件我的建议是,您可以将10G文件放入 从中,单个blob的吞吐量高达每秒60个MiB或每秒500个请求 然后,您可以从Azure Blob存储下载该文件并将其读入内存 10240M / 60M/s = 170.67s/60= 2.84 min 当然,上述限制只是一种理想情况,实际情况还受到网络

我正在Azure上工作。我有一个10G文件要读入内存。所有这些文件都是以制表符分隔的文件或带有分隔符的.dat文件。我可以灵活地创建一个用于读取和处理这些文件的计算环境。如何找到最佳设置,以便在中读取文件我的建议是,您可以将10G文件放入

从中,单个blob的吞吐量高达每秒60个MiB或每秒500个请求

然后,您可以从Azure Blob存储下载该文件并将其读入内存

10240M / 60M/s = 170.67s/60= 2.84 min
当然,上述限制只是一种理想情况,实际情况还受到网络环境等因素的影响

因此,为了在5分钟内满足您的需求,您可以通过两种方式提高性能

1.将blob分成几个部分并按字节顺序下载

您可以在中使用
Range
x-ms-Range
仅返回指定范围内的blob字节

例如,10G blob文件分为100个请求,每单位时间发送100个请求,然后下载到本地文件中进行后续处理。请确保写入的字节位置正确。但这需要系统有10G的内存空间供其使用

2.下载满足配额的每个容量时,同时读入内存

例如,blob被划分为100个请求,每单位时间发送5个请求。按顺序运行20次。每5个请求写入内存,同时发送以下5个请求。这样,系统只需分配大约500米的内存空间

鉴于网络不稳定导致请求中断需要在字节的请求范围内重写,我建议您将文件分成更多部分

此外,Azure服务器可能是更好的选择,因为本地测试可能无法达到理想状态

希望对你有帮助