지원 종료 알림: 2026년 5월 31일에에 대한 지원이 AWS 종료됩니다 AWS Panorama. 2026년 5월 31일 이후에는 AWS Panorama 콘솔 또는 AWS Panorama 리소스에 더 이상 액세스할 수 없습니다. 자세한 내용은 AWS Panorama 지원 종료를 참조하세요.
기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
여러 스레드 실행
처리 스레드에서 애플리케이션 로직을 실행하고 다른 백그라운드 프로세스에는 다른 스레드를 사용할 수 있습니다. 예를 들어 디버깅을 위해 HTTP 트래픽을 제공하는 스레드 또는 추론 결과를 모니터링하고 데이터를 전송하는 스레드를 생성할 수 있습니다 AWS.
여러 개의 스레드를 실행하려면 Python 표준 라이브러리의 스레딩 모듈
예 packages/123456789012-DEBUG_SERVER-1.0/application.py – 메인 루프
def main(): panorama = panoramasdk.node() while True: try: # Instantiate application logger.info('INITIALIZING APPLICATION') app = Application(panorama) # Create threads for stream processing, debugger, and client app.run_thread = threading.Thread(target=app.run_cv) app.server_thread = threading.Thread(target=app.run_debugger) app.client_thread = threading.Thread(target=app.run_client) # Start threads logger.info('RUNNING APPLICATION') app.run_thread.start() logger.info('RUNNING SERVER') app.server_thread.start() logger.info('RUNNING CLIENT') app.client_thread.start() # Wait for threads to exit app.run_thread.join() app.server_thread.join() app.client_thread.join() logger.info('RESTARTING APPLICATION') except: logger.exception('Exception during processing loop.')
모든 스레드가 종료되면 애플리케이션이 자동으로 다시 시작됩니다. run_cv
루프는 카메라 스트림의 이미지를 처리합니다. 중지 신호를 받으면 디버거 프로세스를 종료합니다. 디버거 프로세스는 HTTP 서버를 실행하지만 스스로 종료할 수는 없습니다. 각 스레드는 자체 오류를 처리해야 합니다. 오류가 발견되어 로그되지 않으면 스레드가 자동으로 종료됩니다.
예 packages/123456789012-DEBUG_SERVER-1.0/application.py – 처리 루프
# Processing loop def run_cv(self): """Run computer vision workflow in a loop.""" logger.info("PROCESSING STREAMS") while not self.terminate: try: self.process_streams() # turn off debug logging after 15 loops if logger.getEffectiveLevel() == logging.DEBUG and self.frame_num == 15: logger.setLevel(logging.INFO) except: logger.exception('Exception on processing thread.') # Stop signal received logger.info("SHUTTING DOWN SERVER") self.server.shutdown() self.server.server_close() logger.info("EXITING RUN THREAD")
스레드는 애플리케이션의 self
개체를 통해 통신합니다. 디버거 스레드는 애플리케이션 처리 루프를 다시 시작하기 위해 stop
메서드를 직접적으로 호출합니다. 이 메서드는 다른 스레드에 종료 신호를 보내는 terminate
속성을 설정합니다.
예 packages/123456789012-DEBUG_SERVER-1.0/application.py – 중지 메서드
# Interrupt processing loop def stop(self): """Signal application to stop processing.""" logger.info("STOPPING APPLICATION") # Signal processes to stop self.terminate = True # HTTP debug server def run_debugger(self): """Process debug commands from local network.""" class ServerHandler(SimpleHTTPRequestHandler): # Store reference to application application = self # Get status def do_GET(self): """Process GET requests.""" logger.info('Get request to {}'.format(self.path)) if self.path == "/status": self.send_200('OK') else: self.send_error(400) # Restart application def do_POST(self): """Process POST requests.""" logger.info('Post request to {}'.format(self.path)) if self.path == '/restart': self.send_200('OK')
ServerHandler.application.stop()
else: self.send_error(400)