ฉันเขียนโปรแกรมใน 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
มัน