2017-04-06 24 views
1

別のPythonプログラムからPythonプログラムを起動し、以前のプログラムを同時に終了したいと思います。Python、.pyプログラムを起動して前のプログラムを終了する

私が何をやったかここで

:結果は非常に明白である

if(self.start_button.pression==1): 
     os.system('python program_to_launch.py') 
     sys.exit() 

、プログラムは「program_to_launch.py​​」を起動し、それを実行するために終了するまで待ちます。

問題は、起動したばかりのプログラムの中のwhileループにあります。 無限に続くように作られています。

ここに問題があります。た `sys.exit()

は、私が最初のプログラムを殺すことができるが、前のプログラムはまだ新しいプログラムの終了を待っている、それが実行されませんusing`

がNOTES:method provided by this answerに続いて

私は最初のプログラムを終了したいので、起動するプログラムをインポートできません。

import program_to_launch 

私はそれが解決策ではないと思います。 とコマンドexec file()

execfile('program_to_launch.py')

リンクの答えで提案されているように、それは私はあなただけの新しいプログラムを起動することができると思いprogram_to_launch.py​​

答えて

0

の実行中にいくつかのモジュールをインポートする問題を提供スレッドまたはプロセス:

from os import system 
from threading import Thread 
from sys import exit 

if self.start_button.pression == 1: 
    thread = Thread() 
    thread.run = lambda: system('python program_to_launch.py') 
    thread.start() 

    exit() 
+0

残念ながら、前のプログラムは開いたままでフリーズしていますが、私はプログラムが実行にどこに到着したかを見るために 'print( 'bookmark')'関数を使用しました。 () '関数を呼び出します。少なくとも私は2番目のプログラムを閉じると、最初のプログラムもそれを閉じます。 – Ziru93

+0

注:私も 'sys.exit()'を試しました – Ziru93

+0

os.systemの代わりに、サブプロセス.Popenを試してみてください。それはスレッドを使わなくても動作するはずです – seenorth

関連する問題