国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python使用裝飾器和線程限制函數執行時間的方法

2020-01-04 19:27:04
字體:
來源:轉載
供稿:網友

本文實例講述了python使用裝飾器和線程限制函數執行時間的方法。分享給大家供大家參考。具體分析如下:

很多時候函數內部包含了一些不可預知的事情,比如調用其它軟件,從網絡抓取信息,可能某個函數會卡在某個地方不動態,這段代碼可以用來限制函數的執行時間,只需要在函數的上方添加一個裝飾器,timelimited(2)就可以限定函數必須在2秒內執行完成,如果執行完成則返回函數正常的返回值,如果執行超時則會拋出錯誤信息。

# -*- coding: utf-8 -*-from threading import Threadimport timeclass TimeoutException(Exception): passThreadStop = Thread._Thread__stop#獲取私有函數def timelimited(timeout): def decorator(function):def decorator2(*args,**kwargs):class TimeLimited(Thread):def __init__(self,_error= None,):Thread.__init__(self)self._error = _errordef run(self):try:self.result = function(*args,**kwargs)except Exception,e:self._error =edef _stop(self):if self.isAlive():ThreadStop(self)t = TimeLimited()t.start()t.join(timeout)if isinstance(t._error,TimeoutException):t._stop()raise TimeoutException('timeout for %s' % (repr(function)))if t.isAlive():t._stop()raise TimeoutException('timeout for %s' % (repr(function)))if t._error is None:return t.resultreturn decorator2 return decorator@timelimited(2)def fn_1(secs): time.sleep(secs) return 'Finished'if __name__ == "__main__": print fn_1(4)

希望本文所述對大家的Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新和县| 澄城县| 广西| 弋阳县| 宜章县| 阿城市| 枣庄市| 开封县| 郁南县| 阳原县| 和田市| 开封市| 吉木乃县| 子长县| 乐清市| 永胜县| 库尔勒市| 两当县| 会宁县| 视频| 苍梧县| 上林县| 喀喇沁旗| 中西区| 沂水县| 山东| 兰坪| 罗源县| 武隆县| 吐鲁番市| 长白| 怀柔区| 沁源县| 朝阳市| 嘉定区| 长治市| 新兴县| 百色市| 阳西县| 杂多县| 海城市|