Быстрый пинг в Python

Итак, я пытаюсь получить аналогичные результаты, используя Python, как я делаю с помощью сценария Bash.

Код для скрипта bash:

    #!/bin/bash

    for ip in $(seq 1 254); do
        ping -c 1 10.10.10.$ip | grep "bytes from" | cut -d " " -f 4 | cut -d ":" -f 1 &
    done

То, что я хотел бы сделать, это получить те же результаты с одинаковой скоростью. Проблема, с которой я столкнулся в каждой версии скрипта python, заключается в том, что для ее завершения требуется очень много времени по сравнению с несколькими секундами, которые занимает пакетный скрипт.

Пакетный файл занимает около 2 секунд, чтобы развернуть сеть / 24, в то время как лучшее, что я могу получить с помощью сценария Python, составляет около 5-8 минут.

Последняя версия скрипта Python:

import subprocess

cmdping = "ping -c1 10.10.10."

for x in range (2,255):
    p = subprocess.Popen(cmdping+str(x), shell=True, stderr=subprocess.PIPE)

    while True:
        out = p.stderr.read(1)
        if out == '' and p.poll() != None:
            break
        if out != '':
            sys.stdout.write(out)
            sys.stdout.flush()

Я пробовал несколько разных способов в Python, но не могу приблизиться к скорости скрипта bash.

Какие-либо предложения?

Ответы на вопрос(1)

Ваш ответ на вопрос