docstr: 保留 buffer_size 个 num_consumed_samples 数据，可以索引得到某个 index 下的 num_consumed_samples 多少
  
  Example::
  
      array = NumConsumedSamplesArray(buffer_size=3)
      for i in range(10):
          array.push(i)
  
      array[9]  # 输出为9，表示这个位置真实的 num_consumed_samples 是多少。
      array[6]  # 报错，因为只保留了3个最近的数据，6超过了最大buffer的记录了，即 [7, 8, 9]
  
  暂时由于 sampler 的 batch 都是规整的，先保留
  
  :param buffer_size: 报错多少个历史。
  :param num_consumed_samples: 第一个 num_consumed_samples 是多少。
code: def __init__(self, buffer_size=2000, num_consumed_samples=0):
      """
      保留 buffer_size 个 num_consumed_samples 数据，可以索引得到某个 index 下的 num_consumed_samples 多少
  
      Example::
  
          array = NumConsumedSamplesArray(buffer_size=3)
          for i in range(10):
              array.push(i)
  
          array[9]  # 输出为9，表示这个位置真实的 num_consumed_samples 是多少。
          array[6]  # 报错，因为只保留了3个最近的数据，6超过了最大buffer的记录了，即 [7, 8, 9]
  
      暂时由于 sampler 的 batch 都是规整的，先保留
  
      :param buffer_size: 报错多少个历史。
      :param num_consumed_samples: 第一个 num_consumed_samples 是多少。
      """
      self.count = 0
      self.deque = deque(maxlen=buffer_size)
      if num_consumed_samples is not None:
          self.push(num_consumed_samples)
      self.buffer_size = buffer_size
  
file_path: fastNLP/fastNLP/core/samplers/utils.py
imports: from array import array
  from typing import Sequence
  from collections import deque
label_desc: Use image node_id 1 to create a new NumConsumedSamplesArray object  with example: obj = NumConsumedSamplesArray(buffer_size, num_consumed_samples)