推迟执行#

Xorbits 里大部分对象都是设计成推迟执行的,包括 DataFrame 对象。所谓推迟执行,就是算子在被调用时,不是立即计算,而只是创建了一个执行计划,只有在真正需要它的时候才会触发执行。

目前,以下几种情况会触发执行:

  1. repr 被调用。

  2. str 被调用。

  3. 调用存储数据的方法时,比如 DataFrame.to_csv() 方法。

  4. 必要的信息缺失时。比如调用过程中 DataFrame 的数据类型未知。

在大规模数据中,推迟执行能够极大地提升计算性能。针对连续的调用,部分算子可以做一些优化。比如在执行计划存在重复的算子,优化器可以剪裁,减少计算量。

当然,也可以调用 run() 手动触发执行。你可以传入一个或者一列 Xorbits 对象作为参数。

>>> import xorbits.numpy as np
>>> a = np.arange(3)
>>> xorbits.run(a)
>>> a
array([0, 1, 2])