Executing and getting results#

Lazy execution#

MaxFrame uses lazy execution to make use of global optimization. That is, unless execution results are needed at client side locally, MaxFrame expressions are not executed without manual execution. For instance,

>>> df.head(3)
DataFrame <op=DataFrameILoc, key=182b756be8a9f15c937a04223f11ffba>

is not executed, while

>>> df.head(3).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

will trigger execution. Here we list several conditions that will trigger execution below.

Asynchrous execution#

Specifying wait=False can make execuiton asynchronous. A Future object will be returned.

>>> fut = df.head(3).execute(wait=False)
>>> fut.wait()
>>> fut.result()
          0         1         2
0  0.167771  0.568741  0.877450
1  0.037518  0.796745  0.072169
2  0.052900  0.936048  0.307194

Obtaining results#

You can use fetch() function to fetch execution result from executed objects. The fetched data is a local Python object (i.e., pandas objects or numpy arrays) that can be handled by local Python libraries.

>>> df.execute().fetch()
          0         1         2
0  0.167771  0.568741  0.877450
1  0.037518  0.796745  0.072169
2  0.052900  0.936048  0.307194

Note that fetch() will fetch all data behind the MaxFrame object. If you just need to preview several data, just use repr() function or simply call execute() method in an interactive Python environment like IPython or JupyterLab. MaxFrame will simply peek first and last rows.

>>> repr(df.execute())  # or simply df.execute() if in an interactive environment
           0         1         2
0   0.167771  0.568741  0.877450
1   0.037518  0.796745  0.072169
2   0.052900  0.936048  0.307194
...
97  0.167771  0.568741  0.877450
98  0.037518  0.796745  0.072169
99  0.052900  0.936048  0.307194