La solución es usar una lista para tu comando
command = ["exp", "userid=user/[email protected]", "file=dump.dmp"]
process = subprocess.Popen(command, stdout=subprocess.PIPE)
luego lee process.stdout línea por línea:
line = process.stdout.readline()
de esa manera puede actualizar la GUI sin esperar. SI el subproceso que está ejecutando (exp) vacía la salida. Es posible que la salida esté almacenada en un búfer, entonces no verá nada hasta que el búfer de salida esté lleno. Si ese es el caso, probablemente no tengas suerte.