python - 使用 joblib.Memory 在 AWS S3 中缓存数据
问题描述
是否可以在 AWS S3 中使用 joblib.Memory 缓存函数输出,例如将远程链接传递给cachedir
参数?
例如:
s3_url = 'https://foo.s3..../folder/cache_folder/project_name/joblib'
from joblib import Memory
memory = Memory(s3_url, verbose=0)
@memory.cache
def my_function(x): return x
解决方案
试试这个库:
https://github.com/aabadie/joblib-s3
从他们的文档中:
获取最新代码
要获取最新代码,请使用 git:
git clone git://github.com/aabadie/joblib-s3.git
安装 joblibs3
只需使用 pip:
$ cd joblib-s3
$ pip install -r requirements.txt .
在 AWS S3 中使用 joblibs3 缓存计算结果
请参见以下示例:
import numpy as np
from joblib import Memory
from joblibs3 import register_s3_store_backend
if __name__ == '__main__':
register_s3_store_backend()
# we assume you S3 credentials are stored in ~/.aws/credentials, so no
# need to pass them to Memory constructor.
mem = Memory('joblib_cache', backend='s3', verbose=100, compress=True,
backend_options=dict(bucket="joblib-example"))
multiply = mem.cache(np.multiply)
array1 = np.arange(10000)
array2 = np.arange(10000)
result = multiply(array1, array2)
print(result)
推荐阅读
- javascript - JavaScript 问题在对象内转换字符串(循环内)
- fullcalendar - Fullcalendar.io 按日期或扩展属性获取事件
- python - 无法使用 Scrapy 获取表数据
- r - 通过突变一些变量并保持一些变量与以前相同,将宽数据转换为 long
- python - 在不阻塞 Pygame UI 的情况下录制声音
- python-3.x - 将唯一值列表添加到现有 DataFrame 列
- laravel - 在 Laravel 7 中配置 PhpRedis
- oauth-2.0 - OAuth 令牌,限制 API 使用
- azure-devops - 在 Azure 开发操作中使用 UniversalPackage@0 任务发布成功且没有错误,但工件源中不存在包
- python - pytest - 使用仅在运行时计算的参数对测试进行参数化