0

私は、次のコードました:私はプロセスを終了すると、スレッドも停止しますか?

#!/usr/bin/python3 
import os 
import subprocess 
import time 
import threading 


class StartJar(threading.Thread): 
    def run(self): 
     os.system("java -jar <nazwa_appki>.jar") 

jarFileRun = StartJar   
current_location = subprocess.getoutput("pwd") 

while True: 
    x = subprocess.getstatusoutput("git checkout master && git reset --hard && git fetch && git pull") 
    if x[0] is 0: 
     os.system("git checkout master && git reset --hard && git fetch && git pull") 
     os.system("mvn clean package ~/your/path") 

     try: 
      process_pid = subprocess.check_output(['pgrep', '-f', 'tu_podaj_nazwe_procesu']).decode() 
     except subprocess.CalledProcessError as e: 
      print("pgrep failed because ({}):".format(e.returncode), e.output.decode()) 
     else: 
      try: 
       os.kill(int(process_pid), 9) 
       print('Process with ' + process_pid + ' PID was killed.') 
      except ProcessLookupError as e: 
       print("Process were old...") 
      except ValueError as e: 
       print("There is no such process!") 

     os.system("cp ~/your/path" + ' ' + current_location) 
     jarFileRun.start() 
    else: 
     print('No changes was made...') 

time.sleep(1800) 

をそして私は、私は私のスレッドが実行されるプロセスを殺すならば、それは同様閉じてしまうだろうか?もし私が実行したいファイルのために出てきた新しい変更でもう一度それを実行できるようにスレッドを終了するにはどうすればいいですか? 私はgoogleでスレッドを停止するものを見つけ出そうとしましたが、while文の最初の行に追加したときにはうまくいきませんでした。

+0

はいためのクラス内部の初期化の定義を行います。あなたはあなたのStartJarクラスを削除し、このようなjarFileRun を定義することができますそうするためには

。トレッドはプロセスの内部で実行され、プロセスが終了するとスレッドがスレッド内で実行されます。しかし、それは自分自身をテストするのは簡単です。 – cdarke

+0

なぜJavaをスレッドとして実行しているのですか?バックグラウンドプロセスとして実行しないのはなぜですか? – cdarke

答えて

0

プロセスを終了すると、そのプロセスに対応するすべてのスレッドが終了します。処理中のスレッドの1つを終了すると、プロセスはまだ実行されます。

-1

値がdaemonであるため、デフォルトでは偽であり、メインプロセスが終了してもスレッドが停止しないという意味で終了しません。完全に独立しています。ただし、スレッドのデーモン値をTrueに設定すると、メインプロセスが実行されている限り実行されます。

jarFileRun = threading.Thread(target=os.system, args=("java -jar <nazwa_appki>.jar",), daemon=True) 

それともdaemon

+0

実行関数に追加することはできますか?または__init__を追加する必要がありますか? – Chrzanek

+0

私は答えを更新しました –

関連する問題