Python并行子进程命令同时抑制outpu

2024-10-17 08:19:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用python中的ping做一个简单的ip扫描。我可以并行运行命令,如thisanswer中所示。但是,我不能禁止输出,因为它使用Popen,我不能使用check_output,因为如果主机在某个ip地址关闭,进程返回的退出状态为2,这对于大多数地址都是这样。使用管道也是不可能的,因为有太多的进程同时运行。你知道吗

有没有一种方法可以在抑制输出的同时在python中并发运行这些子进程?以下是我的代码供参考:

def ICMP_scan(root_ip):
  host_list = []
  cmds = [('ping', '-c', '1', (root_ip + str(block))) for block in range(0,256)]
  try:
      res = [subprocess.Popen(cmd) for cmd in cmds]
      for p in res:
        p.wait()
  except Exception as e:
      print(e)

Tags: in命令ipcmdfor进程地址check