![](/img/trans.png)
[英]How to stop/terminate a python script from running with BackgroundScheduler() of APScheduler
[英]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
因為9
是SIGKILL
常量的數值。 從命令行,您可以使用kill -KILL <pid>
(或簡稱kill -9 <pid>
)發送SIGKILL
並立即停止進程運行。
在 Windows 上,您沒有進程信號的 Unix 系統,但您可以使用TerminateProcess
函數強制終止正在運行的進程。 交互式地,最簡單的方法是打開任務管理器,找到與您的程序對應的python.exe
進程,然后單擊“結束進程”按鈕。 您也可以將taskkill
命令用於類似目的。
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 + C或D )
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.