Python: executar subprocesso cat em paralelo
Estou executando várioscat | zgrep
comandos em um servidor remoto e reunindo sua saída individualmente para processamento adicional:
class MainProcessor(mp.Process):
def __init__(self, peaks_array):
super(MainProcessor, self).__init__()
self.peaks_array = peaks_array
def run(self):
for peak_arr in self.peaks_array:
peak_processor = PeakProcessor(peak_arr)
peak_processor.start()
class PeakProcessor(mp.Process):
def __init__(self, peak_arr):
super(PeakProcessor, self).__init__()
self.peak_arr = peak_arr
def run(self):
command = 'ssh remote_host cat files_to_process | zgrep --mmap "regex" '
log_lines = (subprocess.check_output(command, shell=True)).split('\n')
process_data(log_lines)
Isso, no entanto, resulta na execução seqüencial dos comandos do subprocesso ('ssh ... cat ...'). O segundo pico aguarda que o primeiro termine e assim por diante.
Como posso modificar esse código para que as chamadas de subprocesso sejam executadas em paralelo, enquanto ainda é possível coletar a saída de cada uma individualmente?