您好,登錄后才能下訂單哦!
小編給大家分享一下如何解決Python設置函數調用超時,進程卡住的問題,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
背景:
最近寫的Python代碼不知為何,總是執行到一半卡住不動,為了使程序能夠繼續運行,設置了函數調用超時機制。
代碼:
import time import signal def test(i): time.sleep(i % 4) print "%d within time" % (i) return i if __name__ == '__main__': def handler(signum, frame): raise AssertionError for i in range(1, 10): try: signal.signal(signal.SIGALRM, handler) signal.alarm(3) test(i) except AssertionError: print "%d timeout" % (i) finally: signal.alarm(0) signal.signal(signal.SIGALRM, signal.SIG_DFL)
說明:
1、調用test函數超時監控,使用sleep模擬函數執行超時
2、引入signal模塊,設置handler捕獲超時信息,返回斷言錯誤
3、alarm(3),設置3秒鬧鐘,函數調用超時3秒則直接返回
4、捕獲異常,打印超時信息
程序執行結果:
1 within time
2 within time
3 timeout
4 within time
5 within time
6 within time
7 timeout
8 within time
9 within time
看完了這篇文章,相信你對“如何解決Python設置函數調用超時,進程卡住的問題”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。