How do you know they are not run in parallel? Note that your program will print"Done" after every thread is started. To print when they are done, use something like
import multiprocessing import time files = ["path/to/file1.py","path/to/file2.py", "path/to/file3.py","path/to/file4.py", "path/to/file5.py"] process_list=[] for item in files: p = multiprocessing.Process(target=my_function, args=(item,)) p.start() process_list.append(p) still_alive=True while still_alive: print("-"*50) still_alive=False for p in process_list: if p.is_alive(): still_alive=True print(p) time.sleep(0.2) p.join() print("finished")