0
파일 집합에서 다양한 도구를 실행하려면 다음 명령 클래스를 사용하여 파일을 호출합니다.파이썬 하위 프로세스가 종료되지 않습니다.
import subprocess
import threading
import logging
logger = logging.getLogger('root')
class Command(object):
def __init__(self, cmd):
self.cmd = cmd
self.process = None
def run(self, timeout, logfile):
def target():
logger.info('Thread started')
logger.info('Command: %s' % self.cmd)
if logfile is None:
self.process = subprocess.Popen(self.cmd, shell=True)
else:
logger.info('logging to file %s' % logfile.name)
self.process = subprocess.Popen(self.cmd, shell=True, stdout=logfile)
self.process.communicate()
logger.info('Thread finished')
self.process.kill()
thread = threading.Thread(target=target)
# make it a daemon
thread.daemon = True
thread.start()
thread.join(timeout)
if thread.is_alive():
logger.warn('Terminating process')
thread.join()
self.process.kill()
logger.info('Thread Returncode: %d' % self.process.returncode)
return self.process.returncode
내가 직면 문제는 다음과 같습니다
내가 실행 도구/명령은 파이썬 프로그램이 긴 (3+ 시간)를 실행 특히, 제대로 종료하지 않는 것이- .
그래서 나는 당신의 링크에서 솔루션 self.process.kill()를 교체 그렇 겠지. – Derping