          logger.debug("Queue batches: (image_count: %s, batchsize: %s, side: '%s', do_shuffle: %s, "
                       "is_timelapse: %s)", len(images), batchsize, side, do_shuffle, is_timelapse)
          self.batchsize = batchsize
          training_size = self.training_opts.get("training_size", 256)
          batch_shape = list((
              (batchsize, training_size, training_size, 3),  # sample images
              (batchsize, self.model_input_size, self.model_input_size, 3),
              (batchsize, self.model_output_size, self.model_output_size, 3)))
 
</s> remove             self.load_batches,
            batch_shape,
 </s> add             method=self.load_batches,
            shapes=batch_shape,
            in_queue=queue_in,
            out_queue=queue_out, </s> remove     EVENT = mp.Event
    QUEUE = mp.Queue
 </s> add     CTX = mp.get_context("spawn")
    EVENT = CTX.Event </s> remove     def __init__(self, method, shapes,
 </s> add     def __init__(self, method, shapes, in_queue, out_queue, </s> remove     def train_one_batch(self, is_preview_iteration):
 </s> add     def train_one_batch(self, do_preview):
        queue_in, queue_out = self.make_queues(side, is_timelapse)
          logger.debug("Queue batches: (image_count: %s, batchsize: %s, side: '%s', do_shuffle: %s, "
                       "is_timelapse: %s)", len(images), batchsize, side, do_shuffle, is_timelapse)
          self.batchsize = batchsize
        queue_in, queue_out = self.make_queues(side, is_timelapse)
          training_size = self.training_opts.get("training_size", 256)
          batch_shape = list((
              (batchsize, training_size, training_size, 3),  # sample images
              (batchsize, self.model_input_size, self.model_input_size, 3),
              (batchsize, self.model_output_size, self.model_output_size, 3)))
keep keep add keep keep keep keep keep
 Minor FixedProducerDispatcher changes. Fix timelapse bug 
lib/training_data.py