class_docstr: ProducerConsumer wrapper with log_progress reporting.
  
  It is to be used around a `consumer` which returns or yields result records.
  If that is not the case -- use regular `ProducerConsumer`.
  
  It will update `.total` of the `log_progress` each time it changes (i.e. whenever
  producer produced new values to be consumed).
docstr: Parameters
  ----------
  producer, consumer, **kwargs
    Passed into ProducerConsumer. Most likely kwargs must not include 'agg' or
    if provided, it must return an 'int' value.
  log_filter: callable, optional
    If defined, only result records for which callable evaluates to True will be
    passed to log_progress
  label, unit: str, optional
    Provided to log_progress
  lgr: logger, optional
    Provided to log_progress. Local one is used if not provided
code: def __init__(
      self,
      producer,
      consumer,
      *,
      log_filter=None,
      label="Total",
      unit="items",
      lgr=None,
      **kwargs,
  ):
      """
      Parameters
      ----------
      producer, consumer, **kwargs
        Passed into ProducerConsumer. Most likely kwargs must not include 'agg' or
        if provided, it must return an 'int' value.
      log_filter: callable, optional
        If defined, only result records for which callable evaluates to True will be
        passed to log_progress
      label, unit: str, optional
        Provided to log_progress
      lgr: logger, optional
        Provided to log_progress. Local one is used if not provided
      """
      super().__init__(producer, consumer, **kwargs)
      self.log_filter = log_filter
      self.label = label
      self.unit = unit
      self.lgr = lgr
  
imports: import concurrent.futures
  import inspect
  import sys
  import time
  import uuid
  from collections import defaultdict
  from queue import Queue, Empty
  from threading import Thread
  from .None import ansi_colors
  from ..log import log_progress
  from ..utils import path_is_subpath
  from datalad.support.exceptions import CapturedException
  import logging
label_desc: Use image node_id 1 to create a new ProducerConsumerProgressLog object from inherited base classes: ProducerConsumer with example: obj = ProducerConsumerProgressLog(producer, consumer)