मैंने IDLE में टेक्स्ट फ़ाइलों को टोकन करने के लिए एक कार्यक्रम लिखा था और यह tokeniza 349 टेक्स्ट फ़ाइलों को शुरू करता है! हम इसे कैसे रोक सकते हैं? मैं चल रहे पायथन कार्यक्रम को कैसे रोक सकता हूं?
मैंने IDLE में टेक्स्ट फ़ाइलों को टोकन करने के लिए एक कार्यक्रम लिखा था और यह tokeniza 349 टेक्स्ट फ़ाइलों को शुरू करता है! हम इसे कैसे रोक सकते हैं? मैं चल रहे पायथन कार्यक्रम को कैसे रोक सकता हूं?
जवाबों:
अपने कार्यक्रम को रोकने के लिए, बस Control + दबाएं C।
^C
टर्मिनल में दिखा और सिस्टम मॉनिटर ने दिखाया कि अजगर अभी भी सीपीयू का बहुत अधिक उपयोग कर रहा है ...
Ctrl + Z
(कम से कम लिनक्स पर) दबाएँ । फिर, यदि आप इसे मारना चाहते हैं, तो kill %n
दबाएं जहां "एन" वह संख्या है जिसे आपने दबाए जाने पर "स्टॉप्ड" के बगल में मिला है Ctrl + Z
। यदि आप इसे फिर से शुरू करना चाहते हैं, तो दौड़ें fg
।
यदि आप exit()
अपने कोड में फ़ंक्शन का उपयोग करते हैं तो आप यह भी कर सकते हैं । अधिक आदर्श रूप से, आप कर सकते हैं sys.exit()
। sys.exit()
जो हो सकता है अजगर समाप्त भले ही आप के माध्यम से समानांतर में बातें चल रहे हैं multiprocessing
पैकेज।
नोट: उपयोग करने के लिए sys.exit()
, आपको इसे आयात करना होगा:import sys
sys.exit(1)
प्रक्रिया बंद नहीं होती है। मेरे पास मूल रूप से कई धागे हैं और उनमें से प्रत्येक बाहरी प्रक्रियाओं पर शुरू होता है Popen
। मुझे पायथन प्रक्रिया द्वारा बनाई गई सभी उप-प्रक्रियाओं और साथ ही पायथन प्रक्रिया को मारने के लिए एक परमाणु विकल्प की आवश्यकता है। अब तक नहीं मिला।
यदि आपका प्रोग्राम एक संवादात्मक कंसोल पर चल रहा है, तो दबाने CTRL+ से मुख्य धागे पर Cएक KeyboardInterrupt
अपवाद बढ़ जाएगा।
यदि आपका पायथन प्रोग्राम इसे नहीं पकड़ता है, तो KeyboardInterrupt
पायथन के बाहर निकलने का कारण होगा। हालांकि, एक except KeyboardInterrupt:
ब्लॉक, या नंगे जैसा कुछ except:
, इस तंत्र को वास्तव में स्क्रिप्ट को चलने से रोक देगा।
कभी-कभी अगर KeyboardInterrupt
काम नहीं कर रहा है तो आप SIGBREAK
इसके बजाय एक संकेत भेज सकते हैं ; विंडोज पर, CTRL+ Pause/Breakएक दुभाषिया KeyboardInterrupt
अपवाद पैदा किए बिना दुभाषिया द्वारा नियंत्रित किया जा सकता है।
हालांकि, ये तंत्र मुख्य रूप से केवल तभी काम करते हैं जब पायथन दुभाषिया चल रहा है और ऑपरेटिंग सिस्टम घटनाओं का जवाब दे रहा है। यदि पायथन दुभाषिया किसी कारण से प्रतिक्रिया नहीं दे रहा है, तो सबसे प्रभावी तरीका है कि पूरे ऑपरेटिंग सिस्टम की प्रक्रिया को समाप्त करना जो दुभाषिया चल रहा है। इसके लिए तंत्र ऑपरेटिंग सिस्टम द्वारा भिन्न होता है।
यूनिक्स-शैली के शेल वातावरण में, आप कंसोल को नियंत्रित करने वाली जो भी प्रक्रिया है, उसे निलंबित करने के लिए CTRL+ दबा सकते हैं । एक बार जब आपको शेल प्रॉम्प्ट वापस मिल जाता है, तो आप निलंबित नौकरियों को सूचीबद्ध करने के लिए उपयोग कर सकते हैं , और आप पहले निलंबित नौकरी को मार सकते हैं । (यदि आप इसे फिर से चालू करना चाहते हैं, तो आप उपयोग करके अग्रभूमि में काम जारी रख सकते हैं, अधिक जानकारी के लिए नौकरी नियंत्रण पर अपने शेल मैनुअल को पढ़ें।)Zjobs
kill %1
fg %1
वैकल्पिक रूप से, यूनिक्स या यूनिक्स जैसे वातावरण में, आप पायथन प्रक्रिया के पीआईडी (प्रक्रिया पहचानकर्ता) को पा सकते हैं और पीआईडी द्वारा इसे मार सकते हैं। कुछ ps aux | grep python
खोजने के लिए उपयोग करें जैसे कि पायथन प्रक्रियाएं चल रही हैं, और फिर संकेत kill <pid>
भेजने के लिए उपयोग करें SIGTERM
।
kill
यूनिक्स पर आदेश भेजता है SIGTERM
डिफ़ॉल्ट रूप से, और एक अजगर कार्यक्रम के लिए एक संकेत हैंडलर स्थापित कर सकते हैं SIGTERM
का उपयोग कर signal
मॉड्यूल। सिद्धांत रूप में, किसी भी सिग्नल हैंडलर के लिए SIGTERM
प्रक्रिया को शालीनतापूर्वक बंद करना चाहिए। लेकिन कभी-कभी अगर प्रक्रिया अटक जाती है (उदाहरण के लिए, एक अबाधित IO नींद की स्थिति में अवरुद्ध), तो SIGTERM
सिग्नल का कोई प्रभाव नहीं पड़ता है क्योंकि प्रक्रिया भी इसे संभालने के लिए जाग नहीं सकती है।
संकेतों को प्रतिसाद न देने वाली प्रक्रिया को जबरन मारने के लिए, आपको SIGKILL
संकेत भेजने की आवश्यकता होती है , कभी-कभी इसे संदर्भित किया जाता है kill -9
क्योंकि स्थिर 9
का संख्यात्मक मान है SIGKILL
। कमांड लाइन से, आप एक भेजने और तुरंत चलने वाली प्रक्रिया को रोकने के लिए kill -KILL <pid>
(या kill -9 <pid>
संक्षेप में) का उपयोग कर सकते हैं SIGKILL
।
विंडोज पर, आपके पास प्रक्रिया संकेतों की यूनिक्स प्रणाली नहीं है, लेकिन आप TerminateProcess
फ़ंक्शन का उपयोग करके किसी चल रही प्रक्रिया को जबरन समाप्त कर सकते हैं । पारस्परिक रूप से, ऐसा करने का सबसे आसान तरीका टास्क मैनेजर खोलना है, उस python.exe
प्रक्रिया को ढूंढें जो आपके प्रोग्राम से मेल खाती है, और "एंड प्रोसेस" बटन पर क्लिक करें। आप taskkill
समान उद्देश्यों के लिए कमांड का उपयोग भी कर सकते हैं।
Ctrl + C
।exit()
, आप इसे कर सकते हैं।pkill -f name-of-the-python-script
।python script.py&
Ctrl -C यह Ctrl-C से अधिक शक्तिशाली है
किसी रनिंग प्रोग्राम को रोकने के लिए, Ctrl+ का उपयोग करेंC लिए, प्रक्रिया को समाप्त करने के का ।
अजगर में प्रोग्रामेटिक रूप से इसे संभालने के लिए, sys
मॉड्यूल को आयात करें और sys.exit()
जहां आप प्रोग्राम को समाप्त करना चाहते हैं , उसका उपयोग करें ।
import sys
sys.exit()
कीबोर्ड का उपयोग करके एक अजगर स्क्रिप्ट को रोकने के लिए: Ctrl
+C
कोड का उपयोग करके इसे रोकने के लिए (यह मेरे लिए पायथन 3 पर काम कर चुका है):
import os
os._exit(0)
आप भी उपयोग कर सकते हैं:
import sys
sys.exit()
या:
exit()
या:
raise SystemExit
Ctrl + Z इसे करना चाहिए, यदि आप अजगर शेल में पकड़े गए हैं। ध्यान रखें कि स्क्रिप्ट के उदाहरण पृष्ठभूमि में चलते रह सकते हैं, इसलिए लाइनक्स के तहत आपको संबंधित प्रक्रिया को मारना होगा।
jobs
या ps
फिर kill 8923754
या जो भी jobid / प्रक्रिया आईडी आपको मारने की आवश्यकता है
Control+ Dविंडोज 10 पर भी मेरे लिए काम करता है, डाल exit()
अंत भी काम करता है पर।
अपने कार्यक्रम को रोकने के लिए, बस CTRL+ दबाएंD
या exit()
।
प्रेस Ctrl+ Alt+ Deleteऔर कार्य प्रबंधक पॉप अप होगा। पायथन कमांड को चलाएं, उस पर राइट क्लिक करें और स्टॉप या किल पर क्लिक करें।
ctrl+c
इसे मार देना चाहिए। वैकल्पिक रूप से,kill -9
यह