¿Cuál es la diferencia si no uso stdout = subprocess.PIPE en subprocess.Popen ()?

Recientemente noté en Python elsubprocess.Popen() tiene un argumento:

stdout=None(default)

También vi a gente usando stdout = subprocess.PIPE.

¿Cuál es la diferencia? ¿Cuál debo usar?

Otra pregunta sería, ¿por qué la función de espera () no puede esperar hasta que el proceso se realice realmente a veces? Solía:

a = sp.Popen(....,shell=True)
a.wait()
a2 = sp.Popen(...,shell=True)
a2.wait()

a veces, el comando a2 se ejecuta antes de que se ejecute el comando a.

Respuestas a la pregunta(2)

Su respuesta a la pregunta