1
다음 클래스가 올바른지 궁금합니다. 테스트 환경에서 각 테스트에 대해 일련의 시뮬레이터를 시작하는 데 사용하고 있습니다.자체 스레드의 하위 프로세스
class SubProcessInOwnThread(threading.Thread): def __init__(self, arguments, currentWorkingDirectory): self.arguments = arguments self.currentWorkingDirectory = currentWorkingDirectory threading.Thread.__init__(self) self.isTerminated = False def run(self): try: self.subProcess = subprocess.Popen(self.arguments, cwd=self.currentWorkingDirectory) self.subProcess.wait() finally: self.isTerminated = True def kill(self): while not self.isTerminated: try: self.subProcess.kill() except: time.sleep(0.1)
일부 senarios :
# Normal subProcessThreadArguments = ["cmd.exe"] subProcessThread = SubProcessInOwnThread(subProcessThreadArguments,r"C:\\") subProcessThread.start() time.sleep(5) subProcessThread.kill() # Process killed very quickly subProcessThreadArguments = ["cmd.exe"] subProcessThread = SubProcessInOwnThread(subProcessThreadArguments,r"C:\\") subProcessThread.start() subProcessThread.kill() # Incorrect configuration subProcessThreadArguments = ["cmdsfgfg.exe"] subProcessThread = SubProcessInOwnThread(subProcessThreadArguments,r"C:\\") subProcessThread.start() time.sleep(5) subProcessThread.kill()그래서 나는이 같은 시뮬레이터를 만들 수는 :
subProcessThreadArguments1 = ["sim1.exe"] subProcessThread1 = SubProcessInOwnThread(subProcessThreadArguments1,r"C:\\") subProcessThread1.start() subProcessThreadArguments2 = ["sim2.exe"] subProcessThread2 = SubProcessInOwnThread(subProcessThreadArguments2,r"C:\\") subProcessThread2.start() # do test... subProcessThread1.kill() subProcessThread2.kill()
나는 어떤 improvents에 관심이있을 것입니다. with 키워드의 사용을 고려해야합니까? 그렇다면 혜택은 무엇입니까?
감사합니다.
도움을 주셔서 감사합니다! 아니, 나는 또한 __with__이 나를 도울 수는 없다고 느꼈지만 여전히 배우고있어 확신이 들지 않았습니다 ... – Baz