A solução é usar uma lista para o seu comando
command = ["exp", "userid=user/[email protected]", "file=dump.dmp"]
process = subprocess.Popen(command, stdout=subprocess.PIPE)
então você lê process.stdout linha por linha:
line = process.stdout.readline()
dessa forma, você pode atualizar a GUI sem esperar. SE o subprocesso que você está executando (exp) libera a saída. É possível que a saída seja armazenada em buffer, então você não verá nada até que o buffer de saída esteja cheio. Se for esse o caso, então você provavelmente está sem sorte.