解決Python設(shè)置函數(shù)調(diào)用超時,進(jìn)程卡住的問題
背景:
最近寫的Python代碼不知為何,總是執(zhí)行到一半卡住不動,為了使程序能夠繼續(xù)運(yùn)行,設(shè)置了函數(shù)調(diào)用超時機(jī)制。
代碼:
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、調(diào)用test函數(shù)超時監(jiān)控,使用sleep模擬函數(shù)執(zhí)行超時
2、引入signal模塊,設(shè)置handler捕獲超時信息,返回斷言錯誤
3、alarm(3),設(shè)置3秒鬧鐘,函數(shù)調(diào)用超時3秒則直接返回
4、捕獲異常,打印超時信息
程序執(zhí)行結(jié)果:
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設(shè)置函數(shù)調(diào)用超時,進(jìn)程卡住的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)數(shù)值積分的Simpson方法實(shí)例分析
這篇文章主要介紹了python實(shí)現(xiàn)數(shù)值積分的Simpson方法,實(shí)例分析了Python實(shí)現(xiàn)積分運(yùn)算的相關(guān)技巧,需要的朋友可以參考下2015-06-06python ctypes庫2_指定參數(shù)類型和返回類型詳解
今天小編就為大家分享一篇python ctypes庫2_指定參數(shù)類型和返回類型詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn)
這篇文章主要介紹了python selenium 獲取接口數(shù)據(jù)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12keras和tensorflow使用fit_generator 批次訓(xùn)練操作
這篇文章主要介紹了keras和tensorflow使用fit_generator 批次訓(xùn)練操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07GitHub上值得推薦的8個python 項(xiàng)目
GitHub 無疑是代碼托管領(lǐng)域的先行者,Python 作為一種通用編程語言,已經(jīng)被千千萬萬的開發(fā)人員用來構(gòu)建各種有意思或有用的項(xiàng)目。以下我們會介紹一些使用 Python 構(gòu)建的GitHub上優(yōu)秀的項(xiàng)目。2020-10-10python多線程、網(wǎng)絡(luò)編程、正則表達(dá)式詳解
這篇文章主要介紹了python多線程、網(wǎng)絡(luò)編程、正則表達(dá)式,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-12-12