금속 타겟이 센서에 더 가까워지거나 가까워지면 센서 상태의 실시간 업데이트를 인쇄하는 프로그램의 일부가 포함된 센서 판독 프로그램을 개발 중입니다. "main_gui.py" 파일이 먼저 실행되고 사용자가 "데이터 검색 시작" 버튼을 클릭하면 센서 판독 프로세스가 수행되고 인쇄되는 하위 프로세스 "ies2v2.py"가 시작됩니다.
아래 코드는 원래 콘솔에 인쇄된 코드가 GUI에 인쇄되는 방식을 보여줍니다.
으아아아exe를 실행할 때 명령문을 GUI에 인쇄하는 데 지연이 발생합니다. "데이터 검색 시작" 버튼을 클릭하면 인쇄 데이터가 큰 데이터 덩어리로 서둘러 인쇄되고 다시 인쇄하기까지 오랜 지연이 발생합니다. . pycharm처럼 원활하게 실행되길 바랍니다...
참고: 또한 이와 같은 오류로 인해 exe를 생성하는 데 문제가 있었습니다. 찾을 수 없는 파일을 경로에 복사하여 문제를 해결했고 exe가 내 쪽에서 제대로 실행되었습니다. 참고로 이것이 지연의 이유일 수도 있지만... 그럴 필요는 없다고 생각합니다.
편집: ies2v2.py 코드(일부) 아래에는 센서 출력을 읽고 업데이트되는 부분이 있습니다.
def start_data_retrieval(self): # start a new thread for data retrieval threading.thread(target=self.retrieve_data_thread).start() def retrieve_data_thread(self): selected_current = loadcurrent[currentgrp.get()] selected_output = outputtype[outputgrp.get()] print(f"selected current: {selected_current}, selected output: {selected_output}") with subprocess.popen(["python", "ies2v2.py", "--port", self._port, "--current", selected_current.name, "--output", selected_output.name], stdout=subprocess.pipe, stderr=subprocess.stdout) as process: for line in process.stdout: line = line.decode() # defaulting to system encoding text_box.insert(end, line) text_box.update() text_box.see(end) process.poll()
댓글에서 발견했듯이 하위 프로세스는 표준 출력 버퍼를 플러시하지 않으며 이것이 지연의 원인입니다. 표준 출력을 플러시하는 한 가지 방법은 print
函数时添加 flush=True
을 호출하는 것입니다.
위 내용은 EXE를 통해 프로그램을 실행할 때 지연 및 지연 문제를 어떻게 해결합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!