Decorator

@ignore_function

@ignore_function can tell VizTracer to skip on functions you specified.

# This only works when there's a globally registered tracer
@ignore_function
def function_you_want_to_ignore():
    # function body

# You can specify tracer if no global tracer is registered
@ignore_function(tracer=tracer)
def function_you_want_to_ignore():
    # function body
@trace_and_save(method=None, output_dir='./', **viztracer_kwargs)
Parameters:
  • method (function) – trick to make both @trace_and_save and @trace_and_save(**kwargs) work

  • output_dir (str) – output directory you want to put your logs in

  • viztracer_kwargs (dict) – kwargs for VizTracer

@trace_and_save can be used to trace a certain function and save the result as the program goes. This can be very helpful when you are running a very long program and just want to keep recording something periodically. You won’t drain your memory and the parsing/dumping will be done in a new process, which can minimize the performance impact to your main process.

You can pass any argument you want to VizTracer by giving it to the decorator

@trace_and_save(output_dir="./mylogs", ignore_c_function=True)
def function_you_want_to_trace():
    # function body

# this works as well
@trace_and_save
def function_you_want_to_trace():
    # function body
@log_sparse(func=None, stack_depth=0, dynamic_tracer_check=False)

You can make VizTracer log only certain functions using --log_sparse mode.

Parameters:
  • func (function) – callable to decorate

  • stack_depth (int) – log the function and its descendants with a limit stack depth

  • dynamic_tracer_check (bool) – run time check of tracer

from viztracer import log_sparse

# @log_sparse will only log this function
@log_sparse
def function_you_want_to_log():
    # function body

# @log_sparse(stack_depth=5) will log this function and its descendants
# with a limit stack depth of 5
# Nested @log_sparse with stack_depth won't work
# (only the outermost function and its stack will be logged)
@log_sparse(stack_depth=5)
def function_you_want_to_log():
    # function body

# Use dynamic_tracer_check=True if you use tracer as a context manager (or with %%viztracer).
@log_sparse(dynamic_tracer_check=True)
def function_you_want_to_log():
    # function body

with VizTracer(log_sparse=True):
    function_you_want_to_log()