ฉันเขียนโปรแกรมใน IDLE เพื่อโทเค็นไฟล์ข้อความและมันเริ่มเป็นไฟล์ข้อความ tokeniza 349! ฉันจะหยุดมันได้อย่างไร ฉันจะหยุดโปรแกรม Python ที่กำลังทำงานอยู่ได้อย่างไร
ฉันเขียนโปรแกรมใน IDLE เพื่อโทเค็นไฟล์ข้อความและมันเริ่มเป็นไฟล์ข้อความ tokeniza 349! ฉันจะหยุดมันได้อย่างไร ฉันจะหยุดโปรแกรม Python ที่กำลังทำงานอยู่ได้อย่างไร
คำตอบ:
หากต้องการหยุดโปรแกรมของคุณเพียงแค่กด+Control C
^Cในเทอร์มินัลและการตรวจสอบระบบแสดงให้เห็นว่า python ยังคงใช้ CPU จำนวนมาก ...
Ctrl + Z(อย่างน้อยบน Linux) แล้วถ้าคุณต้องการที่จะฆ่ามันวิ่งkill %nที่ "n" คือจำนวนที่คุณได้ถัดจาก "หยุด" Ctrl + Zเมื่อคุณกด fgหากคุณต้องการที่จะกลับมามันทำงาน
คุณสามารถทำได้หากคุณใช้exit()ฟังก์ชันในโค้ดของคุณ sys.exit()เพิ่มเติมความนึกคิดที่คุณสามารถทำได้ sys.exit()ซึ่งอาจยุติ Python แม้ว่าคุณจะเรียกใช้สิ่งต่าง ๆ แบบขนานผ่านmultiprocessingแพ็คเกจ
หมายเหตุ: ในการใช้งานsys.exit()คุณต้องนำเข้า:import sys
sys.exit(1)ไม่หยุดกระบวนการนี้ Popenฉันโดยทั่วไปมีหลายหัวข้อและแต่ละของพวกเขาบล็อกบนกระบวนการภายนอกที่ตั้งขึ้นโดย ฉันต้องการตัวเลือกนิวเคลียร์เพื่อฆ่ากระบวนการย่อยทั้งหมดที่สร้างโดยกระบวนการ Python รวมทั้งกระบวนการ Python เอง ไม่พบเลย
หากโปรแกรมของคุณกำลังทำงานที่คอนโซลแบบโต้ตอบให้กดCTRL+Cจะทำให้เกิดKeyboardInterruptข้อยกเว้นในเธรดหลัก
หากโปรแกรม Python ของคุณไม่สามารถจับมันได้ก็KeyboardInterruptจะทำให้ Python ออก อย่างไรก็ตามexcept KeyboardInterrupt:บล็อกหรือสิ่งที่คล้ายเปล่าexcept:จะป้องกันไม่ให้กลไกนี้หยุดการทำงานของสคริปต์จริงๆ
บางครั้งหากKeyboardInterruptใช้งานไม่ได้คุณสามารถส่งSIGBREAKสัญญาณแทน บน Windows CTRL+ Pause/Breakอาจถูกจัดการโดยล่ามโดยไม่สร้างKeyboardInterruptข้อยกเว้นที่จับได้
อย่างไรก็ตามกลไกเหล่านี้ส่วนใหญ่จะทำงานก็ต่อเมื่อตัวแปล Python ทำงานและตอบสนองต่อเหตุการณ์ของระบบปฏิบัติการ หากล่าม Python ไม่ตอบสนองด้วยเหตุผลบางประการวิธีที่มีประสิทธิภาพที่สุดคือยุติกระบวนการของระบบปฏิบัติการทั้งหมดที่กำลังเรียกใช้ล่าม กลไกสำหรับสิ่งนี้แตกต่างกันไปตามระบบปฏิบัติการ
ในสภาพแวดล้อมเชลล์แบบ Unix คุณสามารถกดCTRL+ Zเพื่อระงับกระบวนการใดก็ตามที่กำลังควบคุมคอนโซลอยู่ เมื่อคุณได้รับเปลือกกลับพร้อมท์คุณสามารถใช้งานรายการระงับและคุณสามารถฆ่างานแรกที่ถูกระงับด้วยjobs kill %1(หากคุณต้องการเริ่มการทำงานอีกครั้งคุณสามารถทำงานต่อในเบื้องหน้าได้โดยใช้fg %1; อ่านคู่มือการควบคุมงานของเชลล์สำหรับข้อมูลเพิ่มเติม)
หรือในสภาพแวดล้อมแบบ Unix หรือ Unix คุณสามารถค้นหา PID ของกระบวนการ Python (ตัวระบุกระบวนการ) และฆ่าโดย PID ใช้บางอย่างเช่นps aux | grep pythonค้นหากระบวนการ Python ที่กำลังทำงานอยู่จากนั้นใช้kill <pid>เพื่อส่งSIGTERMสัญญาณ
killคำสั่งบนระบบปฏิบัติการยูนิกซ์ส่งSIGTERMโดยค่าเริ่มต้นและโปรแกรมหลามสามารถติดตั้งจัดการสัญญาณสำหรับSIGTERMใช้signalโมดูล ตามทฤษฎีแล้วตัวจัดการสัญญาณใด ๆSIGTERMควรปิดกระบวนการอย่างสง่างาม แต่บางครั้งหากกระบวนการติดขัด (เช่นถูกบล็อกในสถานะสลีป IO ที่ไม่ถูกขัดจังหวะ) SIGTERMสัญญาณจะไม่มีผลเนื่องจากกระบวนการไม่สามารถปลุกขึ้นมาเพื่อจัดการได้
ในการบังคับให้ฆ่ากระบวนการที่ไม่ตอบสนองต่อสัญญาณคุณต้องส่งSIGKILLสัญญาณซึ่งบางครั้งเรียกว่าkill -9เพราะ9เป็นค่าตัวเลขของค่าSIGKILLคงที่ จากบรรทัดคำสั่งคุณสามารถใช้kill -KILL <pid>(หรือเรียกkill -9 <pid>สั้น ๆ ) เพื่อส่งSIGKILLและหยุดกระบวนการทำงานทันที
ใน Windows คุณไม่มีระบบ Unix ของสัญญาณกระบวนการ แต่คุณสามารถบังคับยุติกระบวนการที่กำลังทำงานอยู่ได้โดยใช้TerminateProcessฟังก์ชัน วิธีที่ง่ายที่สุดในการโต้ตอบคือการเปิดตัวจัดการงานค้นหาpython.exeกระบวนการที่ตรงกับโปรแกรมของคุณแล้วคลิกปุ่ม "สิ้นสุดกระบวนการ" คุณยังสามารถใช้taskkillคำสั่งเพื่อวัตถุประสงค์ที่คล้ายกัน
Ctrl + Cหากต้องการหยุดสคริปต์หลามเพียงแค่กดexit()คุณสามารถทำได้pkill -f name-of-the-python-script.python script.py&
หากต้องการหยุดโปรแกรมที่กำลังทำงานอยู่ให้ใช้Ctrl+ Cเพื่อยุติกระบวนการ
ในการจัดการโดยใช้โปรแกรมใน python ให้นำเข้าsysโมดูลและใช้ในsys.exit()ตำแหน่งที่คุณต้องการยุติโปรแกรม
import sys
sys.exit()
Ctrl-Break มีประสิทธิภาพมากกว่าCtrl-C
ในการหยุดสคริปต์ python โดยใช้แป้นพิมพ์: Ctrl+C
หากต้องการหยุดใช้รหัส (สิ่งนี้ใช้ได้ผลกับฉันใน Python 3):
import os
os._exit(0)
คุณยังสามารถใช้:
import sys
sys.exit()
หรือ:
exit()
หรือ:
raise SystemExit
Ctrl + Z ควรทำหากคุณติดอยู่ในไพ ธ อนเชลล์ โปรดทราบว่าอินสแตนซ์ของสคริปต์สามารถทำงานต่อไปในพื้นหลังได้ดังนั้นใน linux คุณต้องฆ่ากระบวนการที่เกี่ยวข้อง
jobsหรือpsเลือกkill 8923754รหัสงาน / กระบวนการใด ๆ ที่คุณต้องการเพื่อฆ่า
เมื่อฉันมีสคริปต์ python ที่ทำงานบนเทอร์มินัล linux CTRL + \ ทำงาน (ไม่ใช่ CRTL + C หรือ D)
Control+ ใช้Dงานได้สำหรับฉันใน Windows 10 นอกจากนี้การวางexit()ในตอนท้ายก็ใช้ได้เช่นกัน
exit () จะฆ่า Kernel หากคุณอยู่ใน Jupyter Notebook ดังนั้นจึงไม่ใช่ความคิดที่ดี raiseคำสั่งจะหยุดโปรแกรม
คุณยังสามารถใช้Activity Monitorเพื่อหยุดกระบวนการ py
ในการหยุดโปรแกรมของคุณเพียงกดCTRL+D
หรือexit().
กดCtrl+ Alt+ Deleteและตัวจัดการงานจะปรากฏขึ้น ค้นหาคำสั่ง Python ที่กำลังทำงานอยู่คลิกขวาที่คำสั่งแล้วคลิกหยุดหรือฆ่า
หากคุณกำลังทำงานกับ Spyder ให้ใช้CTRL + (DOT)และคุณจะรีสตาร์ทเคอร์เนลและคุณจะหยุดโปรแกรม
โซลูชัน Windows: Control + C.
โซลูชัน Macbook: Control (^) + C.
อีกวิธีหนึ่งคือเปิดเทอร์มินัลพิมพ์topเขียนPIDกระบวนการที่คุณต้องการฆ่าแล้วพิมพ์บนเทอร์มินัล:kill -9 <pid>
ctrl+cควรฆ่ามัน อีกวิธีหนึ่งคือkill -9มัน