繁体   English   中英

如果我终止进程,线程也会停止吗?

[英]If I terminate the process, the thread would also stop?

我下面的代码:

#!/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语句的第一行时,它对我没有用。

如果终止该进程,则与该进程对应的所有线程都将终止。 如果终止进程中的线程之一,则该进程仍将运行。

不,它不会终止,因为值daemon默认情况下为False,这意味着当主进程完成时线程不会停止,它是完全独立的。 但是,如果将线程的守护程序值设置为True ,则只要主进程也运行,它将一直运行。

为此,您可以删除StartJar类并定义jarFileRun如下所示:

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

或在daemon的类内进行init定义

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM