import signal
# define signal handler function
def myhandler(signum, frame):
print('i received: ', signum)
# register signal.sigtstp's handler
signal.signal(signal.sigtstp, myhandler)
signal.pause()
print('end of signal demo')
1.signal 包
import signal
print signal.sigalrm
print signal.sigcont
2). 預設訊號處理函式
singnal.signal(signalnum, handler)
signalnum為某個訊號,handler為該訊號的處理函式。我們在訊號基礎裡提到,程序可以無視訊號,可以採取預設操作,還可以自定義操作。當handler為signal.sig_ign時,訊號被無視(ignore)。當handler為singal.sig_dfl,程序採取預設操作(default)。當handler為乙個函式名時,程序採取函式中定義的操作。
3. 定時發出sigalrm訊號
乙個有用的函式是signal.alarm(),
它被用於在一定時間之後,向程序自身傳送sigalrm訊號:
import signal
# define signal handler function
def myhandler(signum, frame):
print("now, it's the time")
exit()
# register signal.sigalrm's handler
signal.signal(signal.sigalrm, myhandler)
signal.alarm(5)
while true:
print('not yet')
os.kill(pid, sid)
os.killpg(pgid, sid)
分別向程序和程序組(見linux程序關係)傳送訊號。sid為訊號所對應的整數或者singal.sig*。
sigint 當鍵盤按下ctrl+c從shell中發出訊號,訊號被傳遞給shell中前台執行的程序,對應該訊號的預設操作是中斷 (interrupt) 該程序。
sigquit 當鍵盤按下ctrl+\從shell中發出訊號,訊號被傳遞給shell中前台執行的程序,對應該訊號的預設操作是退出 (quit) 該程序。
sigtstp 當鍵盤按下ctrl+z從shell中發出訊號,訊號被傳遞給shell中前台執行的程序,對應該訊號的預設操作是暫停 (stop) 該程序。
sigcont 用於通知暫停的程序繼續。
sigalrm 起到定時器的作用,通常是程式在一定的時間之後才生成該訊號。
我們使用$ps來查詢ping程序的pid (pid是ping程序的房間號), 在我的機器中為27397
我們可以在shell中通過$
kill
命令來向某個程序發出訊號:
$kill -sigcont 27397
來傳遞sigcont訊號給ping程序。
3. 訊號處理 (signal disposition)
在上面的例子中,所有的訊號都採取了對應訊號的預設操作。但這並不絕對。當程序決定執行訊號的時候,有下面幾種可能:
1) 無視(ignore)訊號,訊號被清除,程序本身不採取任何特殊的操作
2) 預設(default)操作。每個訊號對應有一定的預設操作。比如上面sigcont用於繼續程序。
3) 自定義操作。也叫做獲取 (catch) 訊號。執行程序中預設的對應於該訊號的操作。
程序會採取哪種操作,要根據該程序的程式設計。特別是獲取訊號的情況,程式往往會設定一些比較長而複雜的操作(通常將這些操作放到乙個函式中)。
Python學習筆記(十三)
模組包 if name main 軟體目錄結構規範 作業 atm 購物 程式 import 語句 import module1 module2 modulen 當我們使用import語句的時候,python直譯器通過自己的搜尋路徑 存在sys.path裡 進行搜尋from import 語句 fro...
Python深度學習 學習筆記(十三)
上一節,我們提到了rnn已經rnn在keras中最簡單的層 rnn。但 rnn由於過於簡化,沒有實用價值。實際上,它不可以學到長期依賴。原因在於梯度消失問題,當運用比較多的非迴圈層時,而讓網變得無法訓練。同樣的問題其實也普遍發生在密集連線層。今天介紹的lstm long short term mem...
python基礎學習筆記(十三)
re模組包含對 正規表示式。本章會對 re模組主要特徵和正規表示式進行介紹。什麼是正規表示式 正規表示式是可以匹配文字片段的模式。最簡單的正規表示式就是普通字串,可以匹配其自身。換包話說,正規表示式 python 可以匹配字串 python 你可以用這種匹配行為搜尋文字中的模式,並且用計算後有值併發...