È necessario inserire tutto il codice che utilizza il multiprocessing, all'interno della propria funzione. Ciò impedisce l'avvio ricorsivo di nuovi pool quando il multiprocessing reimporta il modulo in processi separati:
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()
Consulta la documentazione su assicurandoti che il tuo modulo sia importabile , anche i consigli per l'esecuzione su Windows(tm)