Barrido ping rápido en python

Por lo tanto, estoy tratando de obtener resultados similares usando python como lo hago con un script bash.

Código para el script de 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

Lo que me gustaría hacer es obtener los mismos resultados con una velocidad similar. El problema que he tenido con cada versión de la secuencia de comandos de Python es que tarda mucho tiempo en completarse en comparación con los pocos segundos que toma la secuencia de comandos de proceso por lotes.

El archivo por lotes tarda aproximadamente 2 segundos en barrer una red / 24, mientras que lo mejor que puedo obtener con el script de Python es de 5 a 8 minutos.

Última versión del script en 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()

He probado varias formas diferentes en Python, pero no puedo llegar a la velocidad del script de bash.

¿Alguna sugerencia?

Respuestas a la pregunta(1)

Su respuesta a la pregunta