學習Python 十三

2021-06-17 20:33:55 字數 2037 閱讀 9578

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 你可以用這種匹配行為搜尋文字中的模式,並且用計算後有值併發...