'Args:
ds (DataFlow): input DataFlow.
shuffle (bool): whether to shuffle the datapoints before producing them.'

def __init__(self, ds, shuffle=False):

    self.shuffle = shuffle
    self._guard = DataFlowReentrantGuard()
    super(CacheData, self).__init__(ds)
