[a43cea]: / modas / multiprocess.py

Download this file

29 lines (23 with data), 663 Bytes

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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]