ArcMap의 Python 콘솔에서 장기 실행 프로세스의 실행을 어떻게 중단합니까?
예를 들어, 일단 시작되면 아래와 같은 긴 반복을 어떻게 중단합니까?
for i in range(1, 50):
# some long process which takes over a minute to complete
콘솔 창에 입력 한 코드가 실행되는 동안 키보드 조합을 누르거나 버튼 또는 유사한 것을 클릭하여 언제든지 프로세스를 중지하고 싶습니다 .
ArcMap의 Python 콘솔에서 장기 실행 프로세스의 실행을 어떻게 중단합니까?
예를 들어, 일단 시작되면 아래와 같은 긴 반복을 어떻게 중단합니까?
for i in range(1, 50):
# some long process which takes over a minute to complete
콘솔 창에 입력 한 코드가 실행되는 동안 키보드 조합을 누르거나 버튼 또는 유사한 것을 클릭하여 언제든지 프로세스를 중지하고 싶습니다 .
답변:
방금 테스트했지만 ESC 작동하지 않습니다. ArcGIS가 잠시 정지 한 다음 계속됩니다. ArcGIS Python 콘솔에서 일단 실행되면 강제 종료하는 방법이 없습니다. 파이썬 프로세스가 나타나지 않기 때문에 작업 관리자를 사용하여 죽일 수 없습니다.
실제로 강제 종료하려면 ArcGIS Python 콘솔에서 수행하지 않고 IDLE과 같은 IDE를 사용하는 것이 좋습니다. 예를 들어 IDLE에서 Ctrl+ Z또는 Ctrl+ C를 사용 하여 실행을 종료 할 수 있습니다 .
이것이 내가 사용하는 방법입니다.
kill_processx.py 파일의 예 :
import os
nameof_killfile="stop_processx.txt"
if os.path.exists(nameof_killfile):
os.remove(nameof_killfile)
else:
killit=open(nameof_killfile,"w")
killit.close()
무차별 대입 전술을 사용하여 강제로 종료하는 것은 좋지 않습니다. 오히려 @Aragon이 지적했듯이 특정 조건이 충족되지 않으면 스크립트에 오류 처리를 추가하여 구성 요소를 격리하거나 스크립트를 중지해야합니다. @RK가 지적했듯이 ArcGIS python 콘솔은 복잡한 스크립트를 실행하는 데 쓸모가 없습니다. 실제로 IDLE , pythonwin , pyscripter 또는 다른 IDE 호스트와 같은 간단한 작업을 위해 예약해야합니다 . 귀하의 질문과 관련된 토론은 다음과 같습니다.
오류 메시지가 표시되지 않고 arcpy 스크립트에서 sys.exit (0)을 사용하여 일찍 종료하려면 어떻게해야합니까?
10.4에서 일하고
있는데 스크립트가 실행되는 동안 닫기 X 를 클릭 할 수 있음을 발견했습니다 . ArcMap은 작업을 취소 할 것인지 묻습니다.
예를 클릭합니다. 그런 다음 ArcMap은 종료하기 전에 저장할 것인지 묻습니다. 취소를 클릭합니다. 스크립트가 키보드 인터럽트를 발생시킵니다.
pythonic 방식으로 해결하려면 다음을 시도하십시오.
import sys
sys.exit()
또는 사용 :
raise SystemExit()
상세히:
import time
import sys
sTime= time.time()
if time.time() - sTime > 60:
sys.exit()
나는 그것이 당신에게 도움이되기를 바랍니다 ...
sys.exit()있지만 루프 또는 유사하게 긴 프로세스가 실행될 때 작동하지 않습니다.
어떤 코드의 모든 라인에서 당신은 추가하는 경우 if그 검사 if input()=="what ever you want in here"하는 용도 sys.exit.
예를 들면 다음과 같습니다. https://repl.it/@kquazi_tcsp/JumpyNaturalMetadata