Python網絡爬蟲往往需要連續運作很長時間。期間,運作過程中會随時輸出一些狀态資訊,供分析檢視。在此過程中,有時會選擇所需資訊,然後習慣性地點選Ctrl+C進行複制操作,啊哦~~~~ 不妙!對于運作中的Python來說,這也會導緻發出退出運作的信号。于是我們就看到如下的畫面:

KeyboardInterrupt異常!怎麼辦?如果不想因為一個粗心大意的按鍵而導緻程式中途退出,勢必需要對退出信号進行處理,設定退出信号SIGINT的處理函數。具體代碼如下:
import time
import signal
def signal_handler(signal,frame):
print('You pressed Ctrl+C!')
signal.signal(signal.SIGINT,signal_handler)
print('Press Ctrl+C')
for x in range(1,100):
time.sleep(2)
print(x)
現在,即使我們随意反複點選Ctrl+C,也不會導緻程式意外退出了。另外,點選Ctrl+\ 程式也不會再退出了。如圖:
當然,在有些時候,當我們點選Ctrl+C時,還是希望程式能中斷運作,但我們不想看到Traceback那種不友好的資訊,而是希望程式能比較優雅地停下來。這時,不妨在退出信号SIGINT處理函數中,添加一句:sys.exit(0)就可以了。現在代碼和運作情況如下:
import time
import signal
import sys
def signal_handler(signal,frame):
print('You pressed Ctrl+C!')
sys.exit(0)
signal.signal(signal.SIGINT,signal_handler)
print('Press Ctrl+C')
for x in range(1,100):
time.sleep(2)
print(x)