情况:
我想制作一个大型在线数据集的本地永久副本-字典的python列表-以加快处理速度。列表如下:[{index: 1, name:'A', address:'1', phone:'9999', ...}, {index: 2, name:'B', address:'2', phone:'9998', ...}, ...]
,并将增长到包含8到10百万个字典。一旦放在本地驱动器上,我希望能够提取列表的特定部分,例如从索引4000到索引72000。下载服务器的局限性在于,每批只能下载(假设)五千本字典。我正在运行一个简单的循环,以批量下载字典列表,并将下载的数据保存到datacontainer
中:
import sys
def downloaddata(start_index, end_index):
datacontainer = []
counter = start_index
while counter <= end_index:
datacontainer.extend(RESTAPIDOWNLOADER(counter, min(counter + 4999, end_index)))
counter += 5000
print(sys.getsizeof(datacontainer))
downloaddata(1, 8000000)
并发症:
一旦datacontainer
的大小达到22,733,208(假设使用'00 Bytes,使用sys.getsizeof()
进行观察)并且索引达到550万左右,则代码将以MemoryError
暂停。我能想到的一种解决方案是,只要datacontainer
达到5,000,000,就将数据序列化到本地驱动器一次来清空sys.getsizeof()
。但是,此序列化应该能够:
问题
在没有任何可靠的答案后,我尽力寻找答案并伸出援手
----------其他信息-----------
我在以下系统上运行32位Python 3.7:Computer specs