计算框架
mona的Python项目详细描述
单子
mona是一个计算框架,它提供persistentmemoization,并将python调用堆栈转换为任务dependency graph。该图包含三种类型的边:依赖于其他任务输出的任务输入、创建新任务的任务和引用其他任务输出的任务输出。
安装
使用Pip安装和更新。
pip install -U mona
一个简单的例子
frommonaimportMona,Ruleapp=Mona()@Ruleasyncdeftotal(xs):returnsum(xs)@app.entry('fib',int)@Ruleasyncdeffib(n):ifn<=2:return1returntotal([fib(n-1),fib(n-2)])
$ export MONA_APP=fib:app
$ mona init
Initializing an empty repository in /home/mona/fib/.mona.
$ mona run fib 5
7c3947: fib(5): will run
0383f6: fib(3): will run
b0287d: fib(4): will run
f47d51: fib(1): will run
9fd61c: fib(2): will run
45c92d: total([fib(2), fib(1)]): will run
2c136c: total([fib(3), fib(2)]): will run
521a8b: total([fib(4), fib(3)]): will run
Finished
$ mona graph
fromfibimportapp,fibwithapp.create_session()assess:assertsess.eval(fib(5))==sum(sess.eval([fib(4),fib(3)]))