Sono in esecuzione diverse cat | zgrep
comandi su un server remoto e raccogliendo la loro produzione individualmente per ulteriori elaborazioni:Python: eseguire gatto sottoprocesso in parallelo
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)
Ciò, tuttavia, comporta l'esecuzione sequenziale del sottoprocesso ('SSH ... gatto ... ') comandi. Il secondo picco attende il primo alla fine e così via.
Come posso modificare questo codice in modo che le chiamate di sottoprocesso vengano eseguite in parallelo, pur essendo in grado di raccogliere l'output per ciascuna individualmente?
'--mmap' è inutile quando la lettura da un tubo ... – twalberg