--- a +++ b/modas/multiprocess.py @@ -0,0 +1,28 @@ +import multiprocessing as mp +import subprocess +import os + +def run(cmd): + """ + run linux shell by subprocess + """ + null_f = open(os.devnull, 'w') + a = subprocess.call(cmd, shell=True, stdout=null_f, stderr=null_f) + null_f.close() + + return a + + +def parallel(run, values, num_threads=1): + """parallel run linux command line""" + try: + p = mp.Pool(processes=num_threads) + results = [p.apply_async(run, cmd) for cmd in values] + p.close() + p.join() + + except KeyboardInterrupt as e: + p.terminate() + p.join() + raise e + return [result.get() for result in results]