【发布时间】:2014-06-29 22:55:27
【问题描述】:
我正在远程服务器上运行多个cat | zgrep 命令并分别收集它们的输出以进行进一步处理:
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)
然而,这会导致 subprocess('ssh ... cat ...') 命令的顺序执行。第二个高峰等待第一个完成,依此类推。
如何修改此代码以使子进程调用并行运行,同时仍能单独收集每个子进程的输出?
【问题讨论】:
-
--mmap从管道读取时没用...
标签: python shell subprocess python-multithreading