首頁 >後端開發 >Python教學 >如何在 Python 中優雅地處理 SIGINT 中斷?

如何在 Python 中優雅地處理 SIGINT 中斷?

Patricia Arquette
Patricia Arquette原創
2024-12-25 22:36:14205瀏覽

How to Gracefully Handle SIGINT Interruptions in Python?

在Python 腳本中處理SIGINT 中斷

使用執行多個程序和資料庫連線的Python 腳本時,收到SIGINT (Ctrl C) 中斷後會正常退出常常是可取的。在這種情況下,有必要為 SIGINT 註冊一個處理程序來執行必要的清理任務。

Perl 的 SIGINT 處理的 Python 等效項

要在 Python 中實現 Perl 的 SIGINT 處理的模擬,請利用signal.signal函數為如下:

import signal
import sys

def signal_handler(sig, frame):
    print('You pressed Ctrl+C!')
    sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)
print('Press Ctrl+C')
signal.pause()

說明

  • 註冊Handler: signal.signal(signal.SIGINT, signal_handler) 行將signal_handler 函數分配為指定的所有行將signal_handler 函數分配為指定的所有行將signal_handler 函數分配為所有指定的SIGINT 訊號的處理程序。
  • 訊號Handler: signal_handler 函數在收到 SIGINT 時觸發。在這裡,它會列印一條訊息並使用 sys.exit(0) 優雅地退出腳本。
  • 列印並暫停: 註冊處理程序後,腳本提示使用者按 Ctrl C。 signal.pause() 呼叫會阻塞腳本,直到收到訊號為止。

其他資源

  • [訊號模組文件](https://docs.python.org/3/library/signal.html)

以上是如何在 Python 中優雅地處理 SIGINT 中斷?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn