延迟执行#

Mars Tensor、DataFrame 和 Remote 需要调用 .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

然而,有一些函数或方法会立即触发执行。

异步执行#

备注

0.5.2 中新增

指定 wait=False 可以异步执行,它返回一个 Future 对象

>>> import mars.tensor as mt
>>> a = mt.random.rand(100, 10)
>>> future = a.mean().execute(wait=False)
>>> future.done()
True
>>> future.result()
0.49123541512823077