অজগর স্ক্রিপ্টটি চলমান থেকে কীভাবে থামানো / শেষ করতে হবে?


104

আমি আইডিএল-তে একটি টেক্সট ফাইল টোকনাইজ করতে একটি প্রোগ্রাম লিখেছিলাম এবং এটি টোকিনাইজায় শুরু হয় 349 পাঠ্য ফাইল! আমি কীভাবে এটি বন্ধ করতে পারি? আমি কীভাবে চলমান পাইথন প্রোগ্রামটি বন্ধ করতে পারি?


4
ctrl+cএটি হত্যা করা উচিত। বিকল্পভাবে, kill -9এটি
xbonez

4
এখানে অনেক উত্তর প্ল্যাটফর্ম-নির্দিষ্ট। আপনার প্ল্যাটফর্মের জন্য অনুসন্ধান করুন (উইন্ডোজ, লিনাক্স, ম্যাক, অন্য কিছু?)
21:44 এ ট্রিপলি

উত্তর:


60

আপনার প্রোগ্রামটি বন্ধ করতে, কেবল Control + টিপুন C


24
এই পদ্ধতিটি আমার উইন্ডোজ ল্যাপটপে কাজ করেছিল, তবে আমার লিনাক্স ডেস্কটপে ^Cএটি টার্মিনালে প্রদর্শিত হয়েছিল এবং সিস্টেম মনিটরে দেখানো হয়েছিল যে পাইথন এখনও প্রচুর সিপিইউ ব্যবহার করছে ...
ব্যবহারকারীর 3868495

স্ক্রিপ্টটি বন্ধ করার পরে এটি আবার চালু করা কি সম্ভব?
গাথাইড

10
@ গাথাইড আপনি যদি এই প্রক্রিয়াটি বিরতি দিতে এবং পটভূমিতে রাখতে চান তবে Ctrl + Z(কমপক্ষে লিনাক্সে) টিপুন । তারপরে, আপনি যদি এটি মারতে চান তবে kill %n"চাপলে" চাপলে আপনি "স্টপড" এর পাশে যে নম্বর পেয়েছেন সেখানে "এন" যেখানে চালান Ctrl + Z। আপনি যদি এটি আবার চালু করতে চান তবে চালান fg
ক্লাকস্টার

আপনার যদি জেনারেল থাকে তবে কাজ করে না: প্রোগ্রামটিতে ধারা। বাদে: বাধা ধরে, কিছু করে (বা না) এবং তারপরে প্রোগ্রামটি আনন্দের সাথে চালিয়ে যায়।
ড্রাগনলর্ড

116

আপনি যদি আপনার কোডটিতে exit()ফাংশনটি ব্যবহার করেন তবে আপনি এটি করতেও পারেন । আরও আদর্শভাবে, আপনি করতে পারেন sys.exit()sys.exit()যা পারে পাইথন সমাপ্ত করলেও এই আপনি মাধ্যমে সমান্তরাল কিছু দৌড়াচ্ছে multiprocessingপ্যাকেজ।

দ্রষ্টব্য: ব্যবহার করার জন্য sys.exit()আপনাকে অবশ্যই এটি আমদানি করতে হবে:import sys


8
দ্রষ্টব্য: আমি এমন উদাহরণগুলি পেয়েছি যার sys.exit(1)মধ্যে প্রক্রিয়াটি থামবে না। আমার মূলত একাধিক থ্রেড রয়েছে এবং এগুলির প্রত্যেকেরই দ্বারা বাহ্যিক প্রক্রিয়াগুলি ব্লক করা শুরু হয় Popen। পাইথন প্রক্রিয়া এবং পাইথন প্রক্রিয়া নিজেই তৈরি করা সমস্ত উপ-প্রক্রিয়াগুলিকে হত্যা করার জন্য আমার একটি পারমাণবিক বিকল্প প্রয়োজন। এখনও পাওয়া যায় নি।
ডিসি

sys.exit () প্রক্রিয়াটিকে হত্যা করে না কিন্তু সিস্টেম এক্সটিক্স ব্যতিক্রম উত্থাপন করে যা প্রোগ্রামটি বন্ধ করে মৃত্যুদন্ড কার্যকর করে না
c24b

37

যদি আপনার প্রোগ্রামটি ইন্টারেক্টিভ কনসোলে চলছে তবে CTRL+ টিপে মূল থ্রেডে Cএকটি KeyboardInterruptব্যতিক্রম বাড়িয়ে তুলবে ।

যদি আপনার পাইথন প্রোগ্রামটি এটি না ধরে, তবে KeyboardInterruptঅজগরটি পাইথনকে প্রস্থান করবে। তবে কোনও except KeyboardInterrupt:ব্লক, বা খালি জাতীয় কিছু except:এই প্রক্রিয়াটিকে স্ক্রিপ্টটি চালানো থেকে আটকাবে।

কখনও কখনও যদি KeyboardInterruptকাজ না করা হয় তবে আপনি SIGBREAKপরিবর্তে একটি সংকেত পাঠাতে পারেন ; উইন্ডোজে, CTRL+ Pause/Breakক্যাচযোগ্য KeyboardInterruptব্যতিক্রম তৈরি না করে দোভাষী দ্বারা পরিচালনা করা যেতে পারে ।

তবে এই প্রক্রিয়াগুলি কেবল তখনই কাজ করে যদি পাইথন ইন্টারপ্রেটার চলমান থাকে এবং অপারেটিং সিস্টেমের ইভেন্টগুলিতে প্রতিক্রিয়া জানায়। পাইথন দোভাষী যদি কোনও কারণে সাড়া না দেয় তবে সবচেয়ে কার্যকর উপায় হ'ল দোভাষী দৌড়ানোতে সম্পূর্ণ অপারেটিং সিস্টেম প্রক্রিয়াটি সমাপ্ত করা। অপারেটিং সিস্টেম অনুসারে এর জন্য পদ্ধতিটি পরিবর্তিত হয়।

একটি ইউনিক্স-শৈলী শেল পরিবেশ, আপনি টিপতে পারেন CTRL+ + Zথেকে সাসপেন্ড যাই হোক না কেন প্রক্রিয়া বর্তমানে কনসোল নিয়ন্ত্রণ করছে। একবার আপনি শেল প্রম্পট ফিরে পেলে, আপনি jobsস্থগিত কাজগুলির তালিকা করতে ব্যবহার করতে পারেন এবং আপনি প্রথম স্থগিত কাজটি দিয়ে হত্যা করতে পারেন kill %1। (আপনি যদি এটি আবার চলমান শুরু করতে চান, আপনি অগ্রভাগে ব্যবহার করে কাজটি চালিয়ে যেতে পারেন fg %1; আরও তথ্যের জন্য চাকরীর নিয়ন্ত্রণে আপনার শেলের ম্যানুয়ালটি পড়ুন))

বিকল্প হিসাবে, ইউনিক্স বা ইউনিক্স-জাতীয় পরিবেশে আপনি পাইথন প্রক্রিয়াটির পিআইডি (প্রক্রিয়া শনাক্তকারী) খুঁজে পেতে পারেন এবং পিআইডি দ্বারা এটি হত্যা করতে পারেন। ps aux | grep pythonকোন পাইথন প্রক্রিয়া চলছে তা সন্ধান করার মতো কিছু ব্যবহার করুন এবং তারপরে kill <pid>একটি SIGTERMসংকেত প্রেরণের জন্য ব্যবহার করুন ।

killইউনিক্স কমান্ড পাঠায় SIGTERMডিফল্টরূপে, এবং একটি পাইথন প্রোগ্রামের জন্য একটি সংকেত হ্যান্ডলার ইনস্টল করতে পারেন SIGTERMব্যবহার signalমডিউল। তত্ত্ব অনুসারে, কোনও সিগন্যাল হ্যান্ডলারের SIGTERMপ্রক্রিয়াটি নিখুঁতভাবে বন্ধ করে দেওয়া উচিত। তবে কখনও কখনও যদি প্রক্রিয়াটি আটকে থাকে (উদাহরণস্বরূপ, একটি নিরবচ্ছিন্ন আইও ঘুমের রাজ্যে অবরুদ্ধ), একটি SIGTERMসংকেতের কোনও প্রভাব নেই কারণ প্রক্রিয়াটি এটি পরিচালনা করতে এমনকি জাগতে পারে না।

জোর করে এমন প্রক্রিয়াটি মেরে ফেলার জন্য যা সংকেতগুলিকে সাড়া দেয় না, আপনাকে সিগন্যালটি প্রেরণ করতে হবে SIGKILL, কখনও কখনও উল্লেখ করা হয় kill -9কারণ ধ্রুবকের 9সংখ্যাগত মান SIGKILL। কমান্ড লাইন থেকে, আপনি একটি প্রেরণ ব্যবহার করতে kill -KILL <pid>(বা kill -9 <pid>সংক্ষেপে) ব্যবহার করতে পারবেন SIGKILLএবং তত্ক্ষণাত্ প্রক্রিয়াটি চালানো বন্ধ করুন।

উইন্ডোজে, আপনার কাছে ইউনিক্স প্রক্রিয়া সংকেত নেই, তবে আপনি জোর করে TerminateProcessফাংশনটি ব্যবহার করে একটি চলমান প্রক্রিয়াটি শেষ করতে পারেন । ইন্টারেক্টিভভাবে, এটি করার সহজতম উপায় হ'ল টাস্ক ম্যানেজারটি খুলুন, python.exeআপনার প্রোগ্রামের সাথে সম্পর্কিত প্রক্রিয়াটি সন্ধান করুন এবং "শেষ প্রক্রিয়া" বোতামটি ক্লিক করুন। taskkillঅনুরূপ উদ্দেশ্যে আপনি কমান্ডটিও ব্যবহার করতে পারেন ।


31
  • একটি অজগর স্ক্রিপ্ট বন্ধ করতে কেবল টিপুন Ctrl + C
  • এর সাথে একটি স্ক্রিপ্টের ভিতরে exit()আপনি এটি করতে পারেন।
  • আপনি কেবল প্রস্থান করে একটি ইন্টারেক্টিভ স্ক্রিপ্টে এটি করতে পারেন।
  • আপনি ব্যবহার করতে পারেন pkill -f name-of-the-python-script

সর্বশেষ বিকল্পটি বিশেষত কার্যকর যখন আপনি কোনও বিচ্ছিন্ন মোডে স্ক্রিপ্টটি চালাবেন, যেমনpython script.py&
রিচার্জ 8086

26

Ctrl-Break এটি Ctrl-C এর চেয়ে বেশি শক্তিশালী


4
ড্যানিয়েল প্রাইডেন তার উত্তরে যেমন স্পষ্ট করেছেন, কীবোর্ডের ব্রেক কীটিও আমার মতো বিভ্রান্ত যারা তাদের জন্য বিরতি লেবেলযুক্ত হতে পারে। :)
জ্যাকস্ট্রং

25

একটি চলমান প্রোগ্রাম বন্ধ করতে, প্রক্রিয়াটি শেষ করতে Ctrl+ ব্যবহার করুন C

অজগরকে প্রোগ্রাম্যালি হ্যান্ডেল করতে, sysমডিউলটি আমদানি করুন এবং sys.exit()যেখানে আপনি প্রোগ্রামটি শেষ করতে চান সেখানে ব্যবহার করুন ।

import sys
sys.exit()

17

কীবোর্ডটি ব্যবহার করে একটি পাইথন স্ক্রিপ্ট বন্ধ করতে: Ctrl+C

কোড ব্যবহার করে এটি বন্ধ করতে (পাইথন 3 এ এটি আমার জন্য কাজ করেছে):

import os
os._exit(0)

আপনি এটি ব্যবহার করতে পারেন:

import sys
sys.exit()

বা:

exit()

বা:

raise SystemExit

4

সিটিআরএল + জেড এটি করা উচিত, যদি আপনি পাইথন শেলটিতে পড়ে থাকেন। মনে রাখবেন যে স্ক্রিপ্টের উদাহরণগুলি পটভূমিতে চলতে পারে, সুতরাং লিনাক্সের অধীনে আপনাকে সংশ্লিষ্ট প্রক্রিয়াটি হারাতে হবে।


সমান্তরাল প্রক্রিয়াগুলি চালিত করার সময় এটি কার্যকর হয় এবং সিটিআরএল-সি কেবল তাদের সমস্তকে হত্যা করবে না। জন্য CTRL-জেড করার পরে, আপনি চেক করতে পারেন jobsঅথবা psতারপর kill 8923754বা যাই হোক না কেন jobid / প্রক্রিয়া ID আপনাকে হত্যা করতে প্রয়োজন
পল

3

আমার যখন একটি লিনাক্স টার্মিনালটিতে পাইথন স্ক্রিপ্ট চলছে তখন সিটিআরএল + \ কাজ করে। (সিআরটিএল + সি বা ডি নয়)


3

Control+ + Dউইন্ডোজ 10. এছাড়াও আমার জন্য কাজ করে, নির্বাণ exit()শেষ এছাড়াও কাজ করে যায়।


3

প্রস্থান () আপনি জুপিটার নোটবুকে থাকলে কার্নেলকে হত্যা করবে তাই এটি ভাল ধারণা নয়। raiseকমান্ড প্রোগ্রাম বন্ধ করবে।


2

আপনি Activity Monitorপাই প্রক্রিয়া বন্ধ করতে ব্যবহার করতে পারেন



0

প্রেস Ctrl+ + Alt+ + Deleteএবং টাস্ক ম্যানেজার পপ আপ করবে। পাইথন কমান্ডটি চলমান সন্ধান করুন, এটিতে ডান ক্লিক করুন এবং স্টপ বা কিল ক্লিক করুন।


0

আপনি যদি স্পাইডারের সাথে কাজ করছেন তবে সিটিআরএল + ব্যবহার করুন (ডট) এবং আপনি কার্নেলটি পুনরায় চালু করবেন, এছাড়াও আপনি প্রোগ্রামটি বন্ধ করবেন।


0

উইন্ডোজ সমাধান: Control + C

ম্যাকবুক সমাধান: Control (^) + C

আরেকটি উপায় হ'ল একটি টার্মিনাল খুলুন, টাইপ করুন top, PIDযে প্রক্রিয়াটি আপনি মেরে ফেলতে চান তার প্রবন্ধটি লিখুন এবং তারপরে টার্মিনালে টাইপ করুন:kill -9 <pid>

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.