Cómo manejar el bloqueo de subprocesos en Windows

Estoy ejecutando un script de Python desde el símbolo del sistema de Windows. Llama a la función a continuación, que convierte un archivo MP3 en un archivo wave usandoCOJ.

def convert_mp3_to_wav(input_filename, output_filename):
    """
    converts the incoming mp3 file to wave file
    """
    if not os.path.exists(input_filename):
        raise AudioProcessingException, "file %s does not exist" % input_filename

    command = ["lame", "--silent", "--decode", input_filename, output_filename]

    process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    (stdout, stderr) = process.communicate()

    if process.returncode != 0 or not os.path.exists(output_filename):
        raise AudioProcessingException, stdout

    return output_filename

Desafortunadamente, LAME siempre se bloquea (y hace honor a su nombre) en ciertos MP3. Aparece el cuadro de diálogo de Windows "Su programa se ha bloqueado", que congela mi script. Una vez que cierro el cuadro de diálogo de Windows, se levanta la excepción AudioProcessingException. En lugar de tener que decirle a Windows que se calle, me gustaría que la secuencia de comandos genere la excepción y luego pasar al siguiente MP3.

¿Hay alguna forma de evitar esto? Preferiblemente alterando el script en lugar de ejecutarlo con Unix.

Estoy usando Windows 7 y Python 2.6

Respuestas a la pregunta(1)

Su respuesta a la pregunta