import multiprocessing

def run_plot_task(task):
    """Execute a single plotting task.
    
    Parameters
    ----------
    task : tuple
        A tuple of (function, args_tuple) where function is a callable
        plotting function and args_tuple contains its arguments.
    """
    func, args = task
    return func(*args)


def run_plot_tasks_parallel(plot_tasks):
    """Execute a list of independent plotting tasks in parallel.

    Uses the 'fork' context to create worker processes so that the main
    script is NOT re-imported/re-executed in child processes.

    Parameters
    ----------
    plot_tasks : list of tuples
        Each element is (function, args_tuple).
    """
    ctx = multiprocessing.get_context('fork')
    with ctx.Pool() as pool:
        pool.map(run_plot_task, plot_tasks)
