惰性求值#
您需要在 Mars 张量、数据框和远程函数上调用 .execute() 以触发执行。
>>> import mars.tensor as mt
>>> import mars.dataframe as md
>>> df = md.DataFrame(mt.random.rand(3, 3))
>>> df
DataFrame <op=DataFrameFromTensor, key=182b756be8a9f15c937a04223f11ffba>
>>> df.execute()
0 1 2
0 0.167771 0.568741 0.877450
1 0.037518 0.796745 0.072169
2 0.052900 0.936048 0.307194
调用 .execute() 将返回 Mars 对象本身, .fetch() 可以在执行后的对象上调用以获取结果。
>>> import mars.remote as mr
>>> f = mr.spawn(lambda x: x + 1, args=(10,))
>>> f.execute()
Object <op=RemoteFunction, key=8a9ef53cb93cd7698d71512ec813682b>
>>> f.fetch()
11
然而,有一些例外,某些函数会中间触发执行。
遍历 DataFrame,包括
mars.dataframe.DataFrame.iterrows()和mars.dataframe.DataFrame.itertuples()。所有用于DataFrame和Series的绘图函数,包括
mars.dataframe.DataFrame.plot(),mars.dataframe.DataFrame.plot.bar()等等。Mars中的所有函数都像
fit,predict等等一样进行学习。
异步执行#
注意
版本 0.5.2 的新功能
指定 wait=False 可以使执行异步,它将返回一个
Future object。
>>> import mars.tensor as mt
>>> a = mt.random.rand(100, 10)
>>> future = a.mean().execute(wait=False)
>>> future.done()
True
>>> future.result()
0.49123541512823077