python中exit()的用法
最近在學習的時候用到exit(),發現對它的用法還不熟悉,通過查閱網上的資料,對exit()的用法做一個簡單的整理。
1、
sys.exit(n) 退出程式引發SystemExit異常,可以捕獲異常執行些清理工作。n預設值為0,表示正常退出,其他都是非正常退出。還可以 sys.exit(“sorry, goodbye!”); 一般主程式中使用此退出。
exit(0) 有什麼功能?
在很多型別的作業系統裡,exit(0) 可以中斷某個程式,而其中的數字引數則用來表示程式是否是碰到錯誤而中斷。exit(1) 表示發生了錯誤,而 exit(0) 則表示程式是正常退出的。這和我們學的布林邏輯 0==False 正好相反,不過你可以用不一樣的數字表示不同的錯誤結果。比如你可以用exit(100) 來表示另一種和 exit(2)或 exit(1) 不同的錯誤。
2、
os._exit(n), 直接退出, 不拋異常, 不執行相關清理工作。常用在子程序的退出。(其使用會受到平臺的限制,Win32平臺和基於UNIX的平臺不會有所影響。)
3、
exit()/quit(),丟擲出SystemExit異常。一般在互動式shell中退出時使用。
4、
os.kill()
一般用於直接Kill掉程序,但是隻能在UNIX平臺上有效。
Windows下Kill程序
既然在Linux下能夠進行上述操作,那麼Windows下也能夠有相關的操作。
這裡使用的是os.popen(), 該方法是用於直接執行系統命令,而在Windows下其實就是使用taskkill來kill掉程序,其基本形式是,
taskkill /pid 程式的PID號碼
可以直接在CMD視窗下試下這個命令....
可以先開啟一個計算器程式,然後使用tasklist檢視該程式的pid,這裡是620,所以對應的Python程式碼是:
import os
if __name__ == "__main__":
pid = 620
os.popen('taskkill.exe /pid:'+str(pid))
總結;
sys.exit()的退出比較優雅,呼叫後會引發SystemExit異常,可以捕獲此異常做清理工作。
os._exit()直接將python直譯器退出,餘下的語句不會執行。
一般來說 os._exit() 用於線上程中退出
sys.exit() 用於在主執行緒中退出。