[Python] Print out a visual recursion trace

Discussão em 'Python' iniciado por Stack, Janeiro 26, 2025.

  1. Stack

    Stack Membro Participativo

    I have this code that is doing recursion but I want to be able to watch the recursions but illustrate the depth of each recursions and also when it comes back out. Just something simple as shown below. Not sure where I need to put spaces or tabs to make this happened and I'm using a string map_str and then printing it out at the end. Please see code and example of output.

    def get_process_parents(batchDate, late_process):
    global late_parents
    global map_str
    process_depends = []
    #logging.info('late_process: %s ' % late_process)
    process_depends = getprocessDependencies(batchDate, late_process)
    late_parents[late_process.get('name')] = process_depends
    map_str += (' %s ---> %s \n------>\n' % (late_process.get('name'), process_depends))
    #logging.info('Late_process Name: %s ---> Depends: %s ' % (late_process.get('name'),process_depends))
    if not process_depends:
    #logging.info('No more depends: %s' % late_process.get('name'))
    late_parents_process.add(late_process.get('name'))
    map_str += (' %s ---> %s\n ---->\n' % (late_process.get('name'), process_depends))
    else:
    for process_depend in process_depends:
    process = getprocessByName(batchDate, process_depend)
    #logging.info('process_depend %s --> state: %s ' % (process_depend, process.get('state')))
    if process.get('state') == 'Done':
    #logging.info('process depend DONE: %s' % process_depend)
    map_str += (' %s Status: %s\n ---->\n' % (process_depend, process.get('state')))

    else:
    late_parents_process.add(process.get('name'))
    get_process_parents(batchDate, getprocessByName(batchDate,process_depend))


    Output:

    What I want it to look like

    Process_name ----> ['process dependencies 1', 'process dependencies 2']
    ------>process dependencies 1 ----> [process dependencies 3, dependencies 4]
    ------>dependencies 3 -----> []
    ------>dependencies 4 -----> []
    ------>process dependencies 2 ----> [process dependencies 5]
    ------>process dependencies 5 -----> [process dependencies 6]
    ----->process dependencies 6 -----> []

    Continue reading...

Compartilhe esta Página