pythonosfork
㈠ python如何終止os.system調用的程序
建議用subprocess
因為如果你的程序不會自動停止,那麼用os.system(cmd),cmd會一直持續運行知道調用的程序返回結果。
subprocess可以開啟一個子線程,在子線程裡面調用,在你需要的時候就可以把這個子線程關掉,這樣代碼也更靈活
例如:
p = subprocess.Popen("your command")
#todo
#anything you want
time.sleep(10)
p.kill()
這段代碼就是在"your command"運行10秒以後,把它殺掉
㈡ python結束程序的語句
sys.exit()
Python中,當有時當一個條件成立的情況下,需要終止程序,可以使用sys.exit()退出程序。sys.exit()會引發一個異常。
1.如果這個異常沒有被捕獲,那麼python編譯器將會退出,後面的程序將不會執行。
2.如果這個異常被捕獲(try...except...finally),捕獲這個異常可以做一些額外的清理工作,後面的程序還會繼續執行。
註:0為正常退出,其他數值(1-127)為不正常,可拋異常事件供捕獲。
另一種終止程序的方法os._exit(),一般情況下使用sys.exit()即可,一般在fork出來的子進程中使用os._exit()。
㈢ python哪個函數啟動進程和關閉進程
任何一種編程語言,啟動進程和關閉進程都是跟操作系統相關的操作,python中與操作系統打交道的話,推薦使用os模塊。
os.system() 函數可以啟動一個進程,執行完之後返回狀態碼。
os.fork() 復制一個進程,如果是子進程返回0,如果是父進程返回子進程的pid,使用這個函數的時候,建議你學習一下linux編程的知識。
os.popen 以管道的方式創建進程。
os.spawnl 也可以創建進程,並能指定環境變數。
os.kill(pid, sig) 關閉一個進程,pid是進程號,sig是信號。與fork配合使用,例如你剛才用fork創建了一個子進程,它的pid是11990, 那麼調用
os.kill( 11990, signal.CTRL_BREAK_EVENT)
就以ctrl+c的方式殺死了這個進程。
另外還有一個模塊multiprocessing,這個模塊封裝了很多創建進程和進程間通信的操作,可以讓你發揮多核的威力。