只是一个简单的系统,用于管理一组支持缓存(内存和磁盘)的度量(字符串名称/函数/返回数据)
simple_metrics_manager的Python项目详细描述
简单的metrics manager有助于管理度量。
interfaces
"storageinterface"是一个类,它支持使用一些持久后端存储度量数据。当前的默认值是相当通用的".npz"格式
,用于存储numpy数组和简单的python对象"npzStorageInterface"。
为了防止数据损坏,它总是将数据保存到临时文件中,然后
将其移动到实际文件中(可能替换任何较旧的副本)。
它有一个简单的save/load/exists API。
torageinterface使用了numpy的"np.load"和(隐藏的)"savez"方法。
它进行了一些简单的检查,以允许保存数组、数组列表和数组字典。
这是非常快速、高效、可靠的,并且提供了相当大的灵活性。
llow_pickle=false`意味着保存对象数组将失败,
如果需要,请将其更改为'true',但pickle被认为是不稳定的,
因此对python或相关包版本的更改可能意味着您的数据不可读。不过,这是非常方便的,因此它并没有停止像scikit这样的大型软件包从中学习。
/>
使用'force=false')
*使用"side car"度量值对所有度量值进行日期确定(日期)
*打印所有主要操作(使用'verbose=false'禁用)
它具有以下API:
*`set_functions_dict'
-为管理器设置核心数据,这是一个实际上定义了es度量。
键是度量名称,值是度量函数(无参数)。
通过在"初始"之后调用此函数,管理器本身可以在度量函数中使用。
请参阅下面的"用法"。
*` exists`
-boolean,度量是否在内存缓存中。
*`清除缓存`
-从缓存中删除所有度量。
*`计算`
-调用度量函数。
缓存并返回数据。
*`保存`
-计算度量并用存储接口保存结果。
缓存到内存和磁盘并返回数据。
*`load`
-加载一个度量(假设存在)
尝试缓存,然后storageinterface失败。
返回数据
*`get`
-调用save,然后加载。
缓存到磁盘,然后storageinterface`。
返回缓存的数据。
overlo使用`[]`(也称为`` getitem`).
此外,`parametereddatedcachemanager`添加了一个强大的装饰器
称为'collect',它可以自动收集度量。
基本用法:
cm=datacachemanager(npystorageinterface(某些目录))
@cm.collect
def metric_1():
stuff=do_something()
return stuff
@cm.collect
def metric_2():
stuff=do_something_else(cm.metric_1())<;-在此处使用缓存版本
other_stuff=convert(stuff)
return other_stuff
现在调用"cm.metric_1()"和"cm"。metric_2()`无缝地使用
缓存(内存和磁盘上)。
这允许自动高效地处理复杂的依赖关系。
如果您愿意,`metric_1(cache=true)`相当于'cm.metric_1()`。
两者都将调用'cm['metric_1'],后者反过来将调用上面显示的"未修饰"metric_1(),如果它不存在。
示例:`metric_1()`将有意跳过缓存,像正常一样运行
。
难处理(a)
@cm.collect(params_list=[1,2],[1,3],[4,5])
def poly_y(a,b):
返回cm.poly_x(a)**2+do_别的什么东西(b)
`cm.poly_y(1,2)`将运行` poly_y(1,2)`它将运行` cm.poly_x(1)`
它将运行` poly_x(1)`
它将运行` poly_x(1)`
它将运行` poly_x(1)`
x(1)`>
然后r调用"cm.poly_y(1,2)"将加载"cm["poly_y 1_2']`并返回它
运行前的所有操作都可以这样做:
cm.poly廑x.get廑all()
cm.poly廑y.get廑all()
/>您需要确保您已经预先缓存了可能调用的所有内容。
如果您真的想用任何
参数调用缓存管理器中的函数,只需将此选项添加到上面的代码中:
cm=parametereddatacachemanager(npystorageinterface(某些目录),
动态度量创建=真)
除非指定"cache=true",否则不会更改。
_ something()
return stuff
def metric\u2\u function():
stuff=do\u something\u else(cm[metric\u 1])
other\u stuff=convert(stuff)
return other\u stuff
functions\u dict={
metric 1:metric\u 1函数,
metric 2:metric_函数,
…
}
cm.设置函数dict(functions dict)
如果您鄙视decorator
magic;,您仍然可以使用它。
interfaces
"storageinterface"是一个类,它支持使用一些持久后端存储度量数据。当前的默认值是相当通用的".npz"格式
,用于存储numpy数组和简单的python对象"npzStorageInterface"。
为了防止数据损坏,它总是将数据保存到临时文件中,然后
将其移动到实际文件中(可能替换任何较旧的副本)。
它有一个简单的save/load/exists API。
torageinterface使用了numpy的"np.load"和(隐藏的)"savez"方法。
它进行了一些简单的检查,以允许保存数组、数组列表和数组字典。
这是非常快速、高效、可靠的,并且提供了相当大的灵活性。
llow_pickle=false`意味着保存对象数组将失败,
如果需要,请将其更改为'true',但pickle被认为是不稳定的,
因此对python或相关包版本的更改可能意味着您的数据不可读。不过,这是非常方便的,因此它并没有停止像scikit这样的大型软件包从中学习。
/>
使用'force=false')
*使用"side car"度量值对所有度量值进行日期确定(日期)
*打印所有主要操作(使用'verbose=false'禁用)
它具有以下API:
*`set_functions_dict'
-为管理器设置核心数据,这是一个实际上定义了es度量。
键是度量名称,值是度量函数(无参数)。
通过在"初始"之后调用此函数,管理器本身可以在度量函数中使用。
请参阅下面的"用法"。
*` exists`
-boolean,度量是否在内存缓存中。
*`清除缓存`
-从缓存中删除所有度量。
*`计算`
-调用度量函数。
缓存并返回数据。
*`保存`
-计算度量并用存储接口保存结果。
缓存到内存和磁盘并返回数据。
*`load`
-加载一个度量(假设存在)
尝试缓存,然后storageinterface失败。
返回数据
*`get`
-调用save,然后加载。
缓存到磁盘,然后storageinterface`。
返回缓存的数据。
overlo使用`[]`(也称为`` getitem`).
此外,`parametereddatedcachemanager`添加了一个强大的装饰器
称为'collect',它可以自动收集度量。
基本用法:
cm=datacachemanager(npystorageinterface(某些目录))
@cm.collect
def metric_1():
stuff=do_something()
return stuff
@cm.collect
def metric_2():
stuff=do_something_else(cm.metric_1())<;-在此处使用缓存版本
other_stuff=convert(stuff)
return other_stuff
现在调用"cm.metric_1()"和"cm"。metric_2()`无缝地使用
缓存(内存和磁盘上)。
这允许自动高效地处理复杂的依赖关系。
如果您愿意,`metric_1(cache=true)`相当于'cm.metric_1()`。
两者都将调用'cm['metric_1'],后者反过来将调用上面显示的"未修饰"metric_1(),如果它不存在。
示例:`metric_1()`将有意跳过缓存,像正常一样运行
。
难处理(a)
@cm.collect(params_list=[1,2],[1,3],[4,5])
def poly_y(a,b):
返回cm.poly_x(a)**2+do_别的什么东西(b)
`cm.poly_y(1,2)`将运行` poly_y(1,2)`它将运行` cm.poly_x(1)`
它将运行` poly_x(1)`
它将运行` poly_x(1)`
它将运行` poly_x(1)`
x(1)`>
然后r调用"cm.poly_y(1,2)"将加载"cm["poly_y 1_2']`并返回它
运行前的所有操作都可以这样做:
cm.poly廑x.get廑all()
cm.poly廑y.get廑all()
/>您需要确保您已经预先缓存了可能调用的所有内容。
如果您真的想用任何
参数调用缓存管理器中的函数,只需将此选项添加到上面的代码中:
cm=parametereddatacachemanager(npystorageinterface(某些目录),
动态度量创建=真)
除非指定"cache=true",否则不会更改。
_ something()
return stuff
def metric\u2\u function():
stuff=do\u something\u else(cm[metric\u 1])
other\u stuff=convert(stuff)
return other\u stuff
functions\u dict={
metric 1:metric\u 1函数,
metric 2:metric_函数,
…
}
cm.设置函数dict(functions dict)
如果您鄙视decorator
magic;,您仍然可以使用它。