Rozwiązaniem jest użycie listy dla twojego polecenia
command = ["exp", "userid=user/[email protected]", "file=dump.dmp"]
process = subprocess.Popen(command, stdout=subprocess.PIPE)
następnie czytasz process.stdout linia po linii:
line = process.stdout.readline()
w ten sposób możesz zaktualizować GUI bez czekania. JEŚLI podproces, który uruchamiasz (exp) opróżnia dane wyjściowe. Możliwe, że wyjście jest buforowane, wtedy nie zobaczysz niczego, dopóki bufor wyjściowy nie będzie pełny. Jeśli tak jest, prawdopodobnie nie masz szczęścia.