ArcMap के पायथन विंडो में मैन्युअल रूप से स्टेटमेंट निष्पादन कैसे तोड़ना है?


20

आर्कप के अजगर कंसोल में लंबे समय से चल रही प्रक्रिया के निष्पादन को कैसे तोड़ता है?

उदाहरण के लिए, आप एक बार शुरू होने के बाद नीचे की तरह एक लंबे पुनरावृत्ति को कैसे तोड़ते हैं?

for i in range(1, 50):
  # some long process which takes over a minute to complete

मैं किसी भी समय मैं कीबोर्ड संयोजन दबाकर, बटन या कुछ इसी तरह के कोड को दबाकर अपने इच्छित प्रक्रिया को रोक देना चाहता हूं जबकि मेरे पास कंसोल विंडो में इनपुट है जो चल रहा है


1
ब्रेक से क्या आपका मतलब है कि आप इसे छोड़ने के लिए मजबूर करते हैं?
RK

@ आरके: हाँ, मैं इसे किसी भी समय छोड़ने के लिए मजबूर करना चाहता हूं, क्योंकि मेरे पास (1) एक अवांछित आउटपुट देखा गया है, (2) गलत प्रसंस्करण क्रम में प्रवेश किया है, (3) किसी अन्य कारण से।
एलेक्स एस्सिल्फी 12

2
बस संभव कीबोर्ड शॉर्टकट की जाँच की। Ctrl + Z, Ctrl + C और ESC सभी काम नहीं करते हैं। आपको जो चाहिए उसे पूरा करने के लिए आपको IDLE या किसी अन्य IDE का उपयोग करना पड़ सकता है।
RK

विंडोज़ मशीन के लिए lx टर्मिनल में ctrl + Z का उपयोग करें

@ अनुराग: आपके सुझाव के लिए धन्यवाद, लेकिन यह वह नहीं है जो मैं चाहता हूं। मैं जो चाहता हूं वह आर्कप में पायथन विंडो के अंदर निष्पादन को रोकना है, न कि आईडीई या टर्मिनल का उपयोग करना। मुझे पहले से ही पता है कि एक टर्मिनल या आईडीई में निष्पादन कैसे समाप्त किया जाए।
एलेक्स Essilfie

जवाबों:


14

बस यह परीक्षण किया और ESC या तो काम नहीं करता है। ArcGIS बस एक पल के लिए जमा देता है और फिर जारी रहता है। आर्कगिस पाइथन कंसोल में चलने पर बल छोड़ने का कोई तरीका प्रतीत नहीं होता है। आप इसे टास्क मैनेजर का उपयोग करके नहीं मार सकते हैं क्योंकि पायथन प्रक्रिया वहां दिखाई नहीं देती है।

यदि आप वास्तव में इसे छोड़ने के लिए मजबूर करने में सक्षम होना चाहते हैं, तो आप आर्किस पायथन कंसोल में ऐसा करने के बजाय आईडीएलई जैसे आईडीई का उपयोग करने पर विचार करना चाह सकते हैं। उदाहरण के लिए IDLE में, आप निष्पादन को समाप्त करने के लिए Ctrl+ Zया Ctrl+ Cका उपयोग कर सकते हैं ।


1
ArcGIS Pro Python विंडो आपको यह क्रियान्वित करते समय Python कोड को रोकने की सुविधा देती है, तकनीकी सीमाओं के कारण ArcGIS 10.10 विंडो नहीं कर सकती है।
जेसन शहीर

9

यह मेरे द्वारा उपयोग की जाने वाली विधि है:

  • एक छोटा अजगर स्क्रिप्ट बनाएँ जिसे किल_प्रोसेसएक्सहोम कहा जाता है
  • जब रन किल_प्रोसेसएक्स स्टॉप_प्रोक्सटेक्स्ट नामक एक छोटी परीक्षण फ़ाइल बनाता है।
  • मुख्य प्रोग्राम चेक में लूप के ऊपर या नीचे देखें कि क्या stop_processx.txt मौजूद है।
  • यदि यह मौजूद है, तो किसी भी सफाई रूटीन को निष्पादित करें, जिसकी आपको आवश्यकता है, तो उसे शालीनतापूर्वक रोकें।
  • Stop_processx.txt फ़ाइल हटाएँ

एक 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()

वह स्क्रिप्ट जिसे आप "Kill_processx.py" कहते हैं?
हारून

1
Kill_process स्क्रिप्ट बस सही फ़ोल्डर में सही नाम के साथ एक खाली txt फ़ाइल बनाती है।
mhoran_psprep

क्या आप कृपया अपनी पोस्ट में एक नमूना स्क्रिप्ट शामिल कर सकते हैं, इसलिए हम इस बारे में बेहतर विचार प्राप्त कर सकते हैं कि यह ओपी के प्रश्न के साथ कैसे मदद कर सकता है?
हारून

@mhoran_psprep: मैंने आरके के उत्तर को स्वीकार कर लिया है क्योंकि यह प्रश्न का उत्तर देता है (जब तक कि आईडीई में यह संभव नहीं है)। आपके वर्कअराउंड के लिए +1। मुझे लगता है कि मैं इसे भविष्य में लागू करूंगा।
एलेक्स Essilfie

4

ब्रूट फोर्स टैक्टिक्स का उपयोग करके शटडाउन को मजबूर करना बुरा व्यवहार है। इसके बजाय, @Aragon ने बताया कि आपको अपनी स्क्रिप्ट में घटकों और पृथक करने के लिए त्रुटि हैंडलिंग को जोड़ना चाहिए और / या स्क्रिप्ट को रोकना चाहिए यदि कुछ शर्तें पूरी नहीं हुई हैं। @RK बताते हैं, ArcGIS अजगर सांत्वना व्यवहार में जटिल स्क्रिप्ट चल रहा है और, के लिए बेकार के बगल में है, सरल संचालन के लिए आरक्षित किया जाना चाहिए - साथ छड़ी बेकार , pythonwin , pyscripter या अन्य IDEs के मेजबान के किसी भी। यहां आपके प्रश्न से संबंधित चर्चाएं हैं:

मैं त्रुटि संदेश दिखाने के बिना जल्दी से बाहर निकलने के लिए एक चापलूसी स्क्रिप्ट में sys.exit (0) का उपयोग कैसे करूं?

पायथन लिपि को समाप्त करना

पायथन में एक कमांड या प्रॉम्प्ट को कैसे रोकें?


1
और निश्चित रूप से, PyScripter की तरह एक IDE के साथ, आप अपने "... सीमा" कथन पर "ब्रेक प्वाइंट" जोड़ सकते हैं, स्क्रिप्ट को "डीबग मोड" में चला सकते हैं, और आईडीई स्वचालित रूप से उसी पर "विराम" देगा। पुनरावृत्ति प्रक्रिया के दौरान बिंदु और आपको पहले से संसाधित किए गए परिणामों का निरीक्षण करने की अनुमति देता है।
रयानKalton-OffTheGridMaps

2

मैं 10.4 में काम कर रहा हूं, और मैंने पाया है कि यहां छवि विवरण दर्ज करेंजब स्क्रिप्ट चल रही हो तो मैं क्लोज़ एक्स पर क्लिक कर सकता हूं । अगर मैं किसी ऑपरेशन को रद्द करना चाहता हूं तो आर्कपैम मुझसे पूछेगा।

यहां छवि विवरण दर्ज करें

मैं हाँ क्लिक करता हूँ। ArcMap मुझसे पूछता है कि क्या मैं बाहर निकलने से पहले बचाना चाहता हूं। मैं रद्द करें पर क्लिक करता हूं। स्क्रिप्ट एक कुंजीपटल व्यवधान फेंकता है।


इस क्रम को चालू करने के लिए आप किस करीबी बटन पर क्लिक करते हैं?
एलेक्स Essilfie

विंडोज़ रेड X सबसे ऊपर (सभी?) विंडोज़ सॉफ़्टवेयर के ऊपरी दाएँ भाग में है। मेरे उत्तर में छोटी तस्वीर देखें।
एमिल ब्रुंडेज

1

यदि आप pythonic तरीके से हल करना चाहते हैं, तो यह कोशिश करें:

import sys
sys.exit()

या उपयोग:

raise SystemExit()

विस्तार से:

import time
import sys

sTime= time.time()

if time.time() - sTime > 60:
   sys.exit()

मुझे उम्मीद है इससे आपको मदद मिली होगी...


नहीं, यह वह नहीं है जो मैं चाहता हूं। मैं किसी भी समय मैं कीबोर्ड संयोजन दबाकर, बटन या कुछ इसी तरह के कोड को दबाकर अपने इच्छित प्रक्रिया को रोक देना चाहता हूं जबकि मेरे पास कंसोल विंडो में इनपुट है जो चल रहा है । मुझे पता है, sys.exit()लेकिन यह काम नहीं करता है जब एक लूप या इसी तरह की लंबी प्रक्रिया चल रही है।
एलेक्स Essilfie

@ यूपोटर्स: यह वह उत्तर नहीं है जिसकी मुझे तलाश है। यह मेरे प्रश्न का उत्तर नहीं देता है । मैं एक कीबोर्ड संयोजन दबाकर या एक बटन या कुछ समान पर क्लिक करके एक कथन (आमतौर पर पुनरावृत्ति) के निष्पादन को तोड़ना चाहता हूं।
एलेक्स Essilfie

1

कम से कम ArcMap 10.4 में, आप यह कर सकते हैं। सुनिश्चित करें कि "परिणाम" विंडो दिखाई दे रही है। (यदि यह "जियोप्रोसेसिंग" के तहत नहीं मिलता है)। अब अगर आपके पास कोई कमांड चल रही है तो वह इस विंडो में दिखाई देगी। उस पर राइट क्लिक करें और "रद्द करें" दबाएं।


0

क्या होगा यदि कोड की प्रत्येक पंक्ति के तहत आप एक ifचेक जोड़ते हैं if input()=="what ever you want in here"जो उपयोग करता है sys.exit

उदाहरण के लिए: https://repl.it/@kquazi_tcsp/JumpyNaturalMetadata


आशा है कि ये आपकी मदद करेगा।
कैरन क़ाज़ी

0

IDLE का उपयोग करते हुए, मेरे पास एक फाइल है जिसका नाम है "stop.py" जिसमें सिंगल लाइन है: "पास"। इस फ़ाइल को IDLE में खुला रखें जबकि दूसरी .py स्क्रिप्ट चल रही हो। "Stop.py" विंडो में F5 पर क्लिक करने से IDLE रीसेट हो जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.