我正在开发一个涉及处理非常大型数据集的机器学习项目。数据集可以被认为是一个对象列表,每个对象包含100 MB的数据。将所有对象一次加载到内存中会减慢处理速度。我目前的工作是单独加载每个对象并处理它并将处理结果保存到磁盘。对于对象经历的每个处理层,重复该过程。
我想知道python是否有缓存解决方法,基本上它将数据缓存到磁盘并仅在需要处理时才加载它们?
答案 0 :(得分:0)
您可以查看Beaker,其中数据可以按功能缓存到不同的后端,具有不同的过期和不同的密钥。
您也可以使用Memoize Decorator。它每次调用时都会缓存函数的返回值。如果稍后使用相同的参数调用,则返回缓存的值(不重新评估)。
从Python 3.2中,您可以使用functools库中的装饰器@lru_cache。它是最近使用的缓存,因此其中的项目没有到期时间,但作为快速黑客,它非常有用。
您也可以使用joblib。透明磁盘缓存输出值和延迟重新评估(memoize模式),简单的并行计算日志记录和跟踪执行
答案 1 :(得分:0)
我想知道python是否有缓存解决方法,基本上就是这样 将数据缓存到磁盘并仅在需要时加载它们 处理?
不是那种"缓存"你已经做了什么?您逐个加载子集并独立处理它们。 (我希望你不要手动这样做)
很幸运,您不需要同时加载所有数据集。