class_docstr: Internal multi-worker iterator for DataLoader.
docstr: Assign next dataset workload to workers.
docstr_tok: ["Assign","next","dataset","workload","to","workers","."]
code: def _push_next_dataset(self):
      """Assign next dataset workload to workers."""
      current_dataset_idx = self._sent_idx * self._circle_length
      if current_dataset_idx < self._num_datasets:
          circle_length = min(
              self._circle_length,
              self._num_datasets - current_dataset_idx,
          )
          urls = [
              self._dataset[current_dataset_idx + i]
              for i in range(circle_length)
          ]
      else:
          return
      # push to worker asynchronously
      async_ret = self._worker_pool.apply_async(
          self._worker_fn,
          (urls, self._dataset_fn, self._batch_sampler_fn),
      )
      # data buffer stores the async result
      self._data_buffer[self._sent_idx] = async_ret
      self._sent_idx += 1
  
imports: import io
  import os
  import gc
  import glob
  import pickle
  import warnings
  import multiprocessing
  from functools import partial
  import numpy
  from mxnet import context, npx
  from mxnet.gluon.data import ArrayDataset, SimpleDataset
  from mxnet.gluon.data.dataloader import ForkingPickler, _as_in_context, default_mp_batchify_fn, default_batchify_fn
label_desc: Use image node_id 2 for calling the _MultiDatasetWorkerIter obj's underlying member method code with example usage: obj._push_next_dataset() without return types