Как вызвать программу из python, не дожидаясь ее возвращения

Есть ли способ вызвать программу из python, не дожидаясь ее возвращения? Я создал script, который копирует программу в каталог и запускает эту программу. но когда я вызываю программу из python, python script не выходит до выхода программы, которую я запускал. Я попробовал os.system и Popen. есть ли другой способ сделать это?

Добавлена ​​информация: os.spawnl с os.P_DETACH все еще не работает; согласно документам, "P_DETACH похож на P_NOWAIT, но новый процесс отсоединяется от консоли вызывающего процесса". но он все еще каким-то образом привязан к моему процессу вызова (вызов script не будет прекращен до тех пор, пока не будет возвращен любой из вызванных исполняемых файлов)

Программа:

os.system("start test.exe")
print "Done"

после выполнения test.exe, он печатает Done. но это не завершает выполнение script (script процесс все еще запущен). попробовал создать поток демона, а Popen с P_DETACH, все равно не пошел.

Ответы

Ответ 2

Используя poll() вместо wait() на Popen, он не будет блокироваться и не будет ждать запуска программы. Тем не менее, я думаю, что единственным способом действительно остановить всю программу от ожидания является создание демона, который запускает процесс. Таким образом вам никогда не придется ждать.

class MyThread(threading.Thread):
    def run(self):
        '''Start your thread here'''
        pass

thread = MyThread()
thread.daemon = True
thread.start()

Ответ 3

В Windows, если вы вызываете программу с помощью команды shell START, вы должны иметь возможность "освободить" родительский процесс и разрешить ему выйти. Попробуйте START /? в командной строке DOS, чтобы узнать больше.