級別初學者 我在Ubuntu上使用python 2.7版本。 我有一個關於Python中的小代碼片段的困惑。我知道Python中的while True
意味着無限循環。我有以下代碼:隨着時間的推移混亂Python中的「while True」循環
#!/usr/bin/env python
import signal
import time
def ctrlc_catcher(signum, frm):
print "Process can't be killed with ctrl-c!"
def alarm_catcher(signum,frame):
print "Got an alarm"
signal.signal(signal.SIGINT, ctrlc_catcher)
signal.signal(signal.SIGALRM, alarm_catcher)
while True:
signal.alarm(1)
pass
當我執行PROGRAMM輸出是空白的,當我按下Ctrl-C鍵將顯示「過程不能.....」消息。 我的問題是爲什麼signal.alarm(1)
不工作? 但是,如果我把使用
while True:
signal.alarm(1)
time.sleep(1)
pass
它,然後報警被觸發,並在輸出畫面我看到後,每一秒「得到一個警報」消息後,一個小小的停頓。 什麼是time.sleep(1)這樣可以觸發警報? 謝謝
我試過這段代碼了。我的想法是無限期地每隔1秒產生一次報警,你提到的代碼只會產生一次報警。 –
+1 @hobbs是正確的,設置鬧鐘將取消以前的鬧鐘,從而結束無限設置/取消鬧鐘。 – alvits
@pss然後,您必須在警報處理程序中重新安排警報(不確定是否允許)或在主循環中設置要評估的標誌。 – glglgl