Diff of /modas/multiprocess.py [000000] .. [a43cea]

Switch to side-by-side view

--- 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]