lenskit.logging.multiprocess.Monitor#

class lenskit.logging.multiprocess.Monitor(handle_logging=True)#

LensKit monitor controller.

The monitor does several things:

  • Receive and re-inject log messages from worker processes.

  • Track work in progress and periodically write work logs.

The monitor is managed and used internally, and neither LensKit client code nor component implementations often need to interact with it.

Parameters:

handle_logging (bool) – Whether or not to handle log messages.

zmq: Monitor.zmq[Monitor.zmq[bytes]]#
log_address: str | None#
refreshables: dict[uuid.UUID, MonitorRefreshable]#
record_sinks: dict[uuid.UUID, lenskit.logging.multiprocess._records.RecordSink[Any]]#
lock: threading.Lock#
add_refreshable(obj)#
Parameters:

obj (MonitorRefreshable)

Return type:

uuid.UUID

remove_refreshable(uuid)#
Parameters:

uuid (uuid.UUID)

add_record_sink(sink)#
Parameters:

sink (lenskit.logging.multiprocess._records.RecordSink[Any])

remove_record_sink(sink)#
Parameters:

sink (lenskit.logging.multiprocess._records.RecordSink[Any] | uuid.UUID)

await_quiesce(*, ms=100)#

Wait for the monitor to quiesce.

Parameters:

ms (int) – The number of milliseconds of quiet to expect for quiescence.

shutdown()#