Du måste lägga all kod som använder multiprocessing, i sin egen funktion. Detta förhindrar att den rekursivt lanserar nya pooler när multiprocessing återimporterar din modul i separata processer:
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()
Se dokumentationen om att se till att din modul är importerbar , även rådet för körning på Windows(tm)