M.cached¶
定义¶
-
M.cached.
v3
(self, run, input_1=None, input_2=None, input_3=None, kwargs=None)¶ 执行任意Python代码,支持缓存加速。此模块支持1~3个输入端和1~3个输出端。
使用此模块,我们可以快速的自定义模块,并支持缓存加速和增量运算。
对于需要较多计算资源 (比如运行时间超过10s) 或者存储资源 (比如生成较多或者较大的文件) 的程序,都用此模块封装。
参数: - run (函数) – 主函数,需要返回Outputs对象。
- input_1 (port) – 输入1,传入到函数的参数 input_1;默认值是None。
- input_2 (port) – 输入2,传入到函数的参数 input_2;默认值是None。
- input_3 (port) – 输入3,传入到函数的参数 input_3;默认值是None。
- kwargs (字典) – run的参数,如果函数接受参数 input_1/2/3,如上的 input_1/2/3也将被加入到此参数里。在可视化模式下,只有参数 input_1/2/3 可用;默认值是None。
返回: - .data_1: 输出1,对应函数输出的 data_1
- .data_2: 输出1,对应函数输出的 data_2
- .data_3: 输出1,对应函数输出的 data_3
返回类型: Outputs
示例代码¶
查看模块可用版本¶
In [1]:
M.cached.m_get_version
Out[1]:
<bound method BigQuantModule.m_get_version of 模块:cached
可用版本(推荐使用最新版本):v3, v2>
缓存¶
In [2]:
def foo(name):
print('hello, %s' % name)
df = pd.DataFrame({'a': range(0, 100)})
ds = DataSource.write_df(df)
return Outputs(bar=ds)
# 第一次运行的时候,会执行foo
m = M.cached.v3(run=foo, kwargs=dict(name='quant'))
[2017-11-14 14:50:21.735399] INFO: bigquant: cached.v3 开始运行..
hello, quant
[2017-11-14 14:50:21.751642] INFO: bigquant: cached.v3 运行完成[0.016295s].
In [3]:
# 以后再次运行,会先查找缓存,如果找到就直接使用结果
m = M.cached.v3(run=foo, kwargs=dict(name='quant'))
[2017-11-14 14:50:26.447495] INFO: bigquant: cached.v3 开始运行..
[2017-11-14 14:50:26.453801] INFO: bigquant: 命中缓存
[2017-11-14 14:50:26.454765] INFO: bigquant: cached.v3 运行完成[0.007298s].
In [4]:
m.bar.read_df().head()
Out[4]:
a | |
---|---|
0 | 0 |
1 | 1 |
2 | 2 |
3 | 3 |
4 | 4 |