Debe colocar todo el código que usa multiprocesamiento, dentro de su propia función. Esto evita que se lancen recursivamente nuevos grupos cuando el multiprocesamiento vuelve a importar su módulo en procesos separados:
def parse_file(filename):
...
def main():
pool = mp.Pool(processes=8)
pool.map(parse_file, ['my_dir/' + filename for filename in os.listdir("my_dir")])
if __name__ == '__main__:
main()
Consulte la documentación sobre asegurándose de que su módulo esté importable , también el consejos para ejecutar en Windows(tm)