grupo de multiprocesamiento no funciona en funciones anidadas

El siguiente código no se ejecuta como se esperaba.

import multiprocessing

lock = multiprocessing.Lock()
def dummy():
    def log_results_l1(results):
        lock.acquire()
        print("Writing results", results)
        lock.release()

    def mp_execute_instance_l1(cmd):
        print(cmd)
        return cmd

    cmds = [x for x in range(10)]

    pool = multiprocessing.Pool(processes=8)

    for c in cmds:
        pool.apply_async(mp_execute_instance_l1, args=(c, ), callback=log_results_l1)

    pool.close()
    pool.join()
    print("done")


dummy()

Pero funciona si las funciones no están anidadas. Que esta pasando.

Respuestas a la pregunta(1)

Su respuesta a la pregunta