簡體   English   中英

如何停止/終止 python 腳本的運行?

[英]How to stop/terminate a python script from running?

我在 IDLE 中編寫了一個程序來標記文本文件,它開始標記 349 個文本文件? 我怎樣才能阻止它? 如何停止正在運行的 Python 程序?

如果在代碼中使用exit()函數,也可以這樣做。 更理想的是,您可以執行sys.exit() sys.exit()即使您通過multiprocessing包並行運行,它也可能終止 Python。

注意:為了使用sys.exit() ,您必須導入它: import sys

要停止您的程序,只需按Control + C

如果您的程序在交互式控制台上運行,按CTRL + C將在主線程上引發KeyboardInterrupt異常。

如果您的 Python 程序沒有捕捉到它, KeyboardInterrupt將導致 Python 退出。 但是,一個except KeyboardInterrupt:塊,或類似一個空的except: ,將阻止此機制實際停止腳本運行。

有時,如果KeyboardInterrupt不起作用,您可以改為發送SIGBREAK信號; 在 Windows 上, CTRL + Pause/Break可以由解釋器處理,而不會產生可捕獲的KeyboardInterrupt異常。

但是,這些機制主要僅在 Python 解釋器正在運行並響應操作系統事件時才起作用。 如果 Python 解釋器由於某種原因沒有響應,最有效的方法是終止運行解釋器的整個操作系統進程。 此機制因操作系統而異。

在 Unix 風格的 shell 環境中,您可以按CTRL + Z掛起當前控制控制台的任何進程。 返回 shell 提示后,您可以使用jobs列出掛起的作業,並且可以使用kill %1殺死第一個掛起的作業。 (如果你想讓它再次運行,你可以使用fg %1在前台繼續工作;閱讀你的 shell 的工作控制手冊以獲取更多信息。)

或者,在 Unix 或類 Unix 環境中,您可以找到 Python 進程的 PID(進程標識符)並通過 PID 將其殺死。 使用類似ps aux | grep python東西 ps aux | grep python查找正在運行的 Python 進程,然后使用kill <pid>發送SIGTERM信號。

Unix 上的kill命令默認發送SIGTERM ,Python 程序可以使用signal模塊為SIGTERM安裝信號處理程序。 理論上, SIGTERM任何信號處理程序都應該優雅地關閉進程。 但有時如果進程卡住(例如,在不可中斷的 IO 睡眠狀態中被阻塞), SIGTERM信號不起作用,因為該進程甚至無法喚醒來處理它。

要強行殺死不響應信號的進程,您需要發送SIGKILL信號,有時稱為kill -9因為9SIGKILL常量的數值。 從命令行,您可以使用kill -KILL <pid> (或簡稱kill -9 <pid> )發送SIGKILL並立即停止進程運行。

在 Windows 上,您沒有進程信號的 Unix 系統,但您可以使用TerminateProcess函數強制終止正在運行的進程。 交互式地,最簡單的方法是打開任務管理器,找到與您的程序對應的python.exe進程,然后單擊“結束進程”按鈕。 您也可以將taskkill命令用於類似目的。

  • 要停止 python 腳本,只需按Ctrl + C
  • 在帶有exit()的腳本中,您可以做到。
  • 您只需退出即可在交互式腳本中執行此操作。
  • 您可以使用pkill -f name-of-the-python-script

要停止正在運行的程序,請使用Ctrl + C終止該進程。

要在 python 中以編程方式處理它,請導入sys模塊並在要終止程序的地方使用sys.exit()

import sys
sys.exit()

使用鍵盤停止 python 腳本: Ctrl + C

使用代碼停止它(這在 Python 3 上對我有用):

import os
os._exit(0)

您還可以使用:

import sys
sys.exit()

或者:

exit()

或者:

raise SystemExit

Ctrl - Break它比Ctrl - C更強大

當我在 linux 終端上運行 python 腳本時, CTRL + \\起作用。 (不是CRTL + CD

Ctrl + Z應該這樣做,如果您被python shell 捕獲。 請記住,腳本的實例可以繼續在后台運行,因此在 linux 下您必須殺死相應的進程。

如果您在 Jupyter Notebook 中,exit() 將殺死內核,因此這不是一個好主意。 raise命令將停止程序。

要停止您的程序,只需按CTRL + D

exit()

Control + D在 Windows 10 上對我有用。此外,將exit()放在最后也有效。

您還可以使用Activity Monitor來停止 py 進程

如果您正在使用 Spyder,請使用CTRL + 您將重新啟動內核,同時您將停止該程序。

Windows 解決方案: Control + C

Macbook 解決方案: Control (^) + C

另一種方法是打開一個終端,輸入top ,記下您想殺死的進程的PID ,然后在終端上輸入: kill -9 <pid>

Ctrl + Alt + Delete會彈出任務管理器。 找到正在運行的 Python 命令,右鍵單擊它,然后單擊停止或終止。

拔出設備的插頭,然后將其從窗口中取出

嘗試使用:

Ctrl + Fn + S

或者

Ctrl + Fn + B

如果您正在編寫一個腳本來處理 349 個文件,但想用更少的文件進行測試,只需在您的列表中寫一個不存在的詞,如“停止”,這將導致異常形式的停止。 這避免了對話框,例如如果您使用exit()quit()是否要終止您的進程

以編程方式,您可以使用以下代碼:

while True:
    pass

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM