Python的訊號處理與程式退出

2021-06-26 12:01:19 字數 692 閱讀 3181

如果寫的python程式是多執行緒或多程序的,就涉及到程式安全退出的問題。

需要先將子程序逐個殺掉後再退出主程序,不然會導致主程序退出(ctrl+c)後子程序不退出而繼續執行。

​需要在啟動多執行緒時將執行緒的"daemon"屬性設定為"true"(預設為"false"),

否則程式會死鎖而無法退出(ctrl+c);

下面是示例**:

import signal

import threading

def sig_handler(sig, frame):

try:

th_timeout.stop()

th_timeout.join()

except exception, ex:

exit(0)

​def main(): 

... 

##set signal handler 

signal.signal(signal.sigterm, sig_handler)

signal.signal(signal.sigint, sig_handler)

global th_timeout

th_timeout.setdaemon('true')

th_timeout.start()

if __name__ == "__main__":

main()

Python訊號處理

通常我們認為,在try語句中,finally一定會執行。coding utf 8 import time import os import logging try print start try,sleep 30s.print pid s os.getpid time.sleep 30 print ...

python多執行緒下訊號處理程式示例

下面是乙個網上 的實現思路,經過oyyaovp驗證,發現是可行的,就記錄下來。思路python多執行緒中要響應ctrl c的訊號以殺死整個程序,需要 1.把所有子執行緒設為daemon 2.使用isalive 函式判斷所有子執行緒是否完成,而不是在主線程中用join 函式等待完成 3.寫乙個響應ct...

LinuxNP 訊號與訊號處理函式

程序a向程序b傳送訊號 忽略 恢復某訊號 訊號是當作業系統中某些情況發生改變時,由作業系統向程序傳送,程序可對訊號進行捕捉並處理 程序缺省會對不同的訊號進行處理,使用者可通過自定義訊號處理函式並使用signal 將自定義的訊號處理函式與指定訊號進行繫結,訊號處理函式在訊號預設處理方式之前呼叫,原先處...