Shortcuts

data.buffer.buffer

缓冲区

缓冲区

class ding.data.buffer.buffer.Buffer(size: int)[source]

Buffer是设备存储、第三方服务或数据结构的抽象, 例如,内存队列、sum-tree、redis或di-store。

abstract delete(index: str)[source]
Overview:

按索引删除一个数据样本

Arguments:
  • 索引 (str): 索引

abstract get(idx: int) BufferedData[source]
Overview:

通过下标索引获取项目

Arguments:
  • idx (int): 下标索引

Returns:
  • 缓冲数据 (BufferedData): 来自缓冲区的项目

abstract push(data: Any, meta: dict | None = None) BufferedData[source]
Overview:

将数据及其元信息推入缓冲区。

Arguments:
  • 数据 (Any): 将被推入缓冲区的数据。

  • meta (dict): 元信息,例如优先级、计数、陈旧度。

Returns:
  • buffered_data (BufferedData): 推送的数据。

abstract sample(size: int | None = None, indices: List[str] | None = None, replace: bool = False, sample_range: slice | None = None, ignore_insufficient: bool = False, groupby: str | None = None, unroll_len: int | None = None) List[BufferedData] | List[List[BufferedData]][来源]
Overview:

样本数据长度为 size

Arguments:
  • size (Optional[int]): 将要采样的数据数量。

  • 索引 (Optional[List[str]]): 包含多个索引的样本。

  • replace (bool): 如果使用replace为true,您可能会从缓冲区接收到重复的数据。

  • sample_range (slice): 样本范围切片。

  • ignore_insufficient (bool): If ignore_insufficient is true, sampling more than buffer size

    没有重复不会导致异常。

  • groupby (Optional[str]): 元数据中的分组键,即 groupby=”episode”

  • unroll_len (Optional[int]): 组内连续帧的数量。

Returns:
  • sample_data (Union[List[BufferedData], List[List[BufferedData]]]):

    一个长度为size的数据列表,如果设置了groupby,可能会嵌套。

abstract update(index: str, data: Any | None = None, meta: dict | None = None) bool[source]
Overview:

通过索引更新数据和元数据

Arguments:
  • 索引 (str): 数据的索引。

  • 数据 (any): 纯数据。

  • meta (dict): 元信息。

Returns:
  • 成功 (bool): 是否成功,如果缓冲区中不存在具有该索引的数据,则返回 false。

use(func: Callable) Buffer[source]
Overview:

使用算法中间件来修改缓冲区的行为。 每个中间件应该是一个可调用的函数,它将接收三个参数部分,包括: 1. 缓冲区实例,您可以使用此实例访问缓冲区的所有内容,包括存储。 2. 用户调用的函数,有三个方法名为pushsampleclear,因此您可以使用这些函数名来决定选择哪个操作。 3. 用户传递给原始函数的剩余参数,将通过*args传递。

每个中间件处理程序应返回两部分值,包括: 1. 第一个值是done(True或False),如果done==True,中间件链将立即停止,本次执行期间不会执行更多的中间件 2. 剩余的值将传递给下一个中间件或缓冲区中的默认函数。

Arguments:
  • func (Callable): 中间件处理程序

Returns:
  • buffer (Buffer): 实例自身

view() Buffer[source]
Overview:

视图是缓冲区的一个新实例,除了存储之外,每个属性都是深拷贝的。 存储在所有缓冲区实例之间共享。

Returns:
  • buffer (Buffer): 实例自身