Extra Tools from hydra callbacks
Resource Monitor Utilities.
ProcessTimer
Bases: Process
Timer behavior using Process instead of Thread.
Using a process make sure that we won't be block by the GIL.
Adapted from: https://stackoverflow.com/a/25297758
cancel()
Stop the timer if it hasn't finished yet.
run()
Run the timer.
ResourceMonitorService
A Service that monitor a PID with a certain frequency to a file.
A threading or a process backend is available. The process backend is recommended for single core application that do not release the GIL. The threading backend is recommended for multi core / multi processes application that release the GIL
Adapted from: https://github.com/nipy/nipype/blob/master/nipype/utils/profiler.py
Parameters:
-
pid
(int | None
, default:None
) –The process ID to monitor
-
interval
(int | float
, default:1
) –The sampling interval in seconds, default 1s.
-
base_name
(str
, default:''
) –Base name for the monitoring trace file.
-
gpu_monit
(bool
, default:False
) –If True, also monitor gpu usage and memory, default False.
__del__()
Close the log file.
get_values()
Return the values collected by the monitor.
start()
Start monitoring.
stop()
Stop monitoring.
int_or_0(byte_str)
Return the int value of a byte string or 0.
Performance tracking tool.
PerfLogger
Simple Performance logger to use as a context manager.
Parameters:
-
logger
(Logger | Callable
) –A logger object or a callable
-
level
(int
, default:INFO
) –log level, default=0 , infos
-
time_format
(str
, default:'{name} duration: {:.2f}s'
) –format string to display the elapsed time
Example
with PerfLogger(print) as pfl: time.sleep(1)
get_timer(name)
classmethod
Return the elapsed time of a timer.
recap(logger=None)
classmethod
Return a string summarizing all the registered timers.
reset()
classmethod
Reset all the registered timers.