欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python使用裝飾器和線程限制函數(shù)執(zhí)行時(shí)間的方法

 更新時(shí)間:2015年04月18日 14:25:22   作者:lele  
這篇文章主要介紹了python使用裝飾器和線程限制函數(shù)執(zhí)行時(shí)間的方法,主要涉及timelimited函數(shù)的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

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

很多時(shí)候函數(shù)內(nèi)部包含了一些不可預(yù)知的事情,比如調(diào)用其它軟件,從網(wǎng)絡(luò)抓取信息,可能某個(gè)函數(shù)會(huì)卡在某個(gè)地方不動(dòng)態(tài),這段代碼可以用來(lái)限制函數(shù)的執(zhí)行時(shí)間,只需要在函數(shù)的上方添加一個(gè)裝飾器,timelimited(2)就可以限定函數(shù)必須在2秒內(nèi)執(zhí)行完成,如果執(zhí)行完成則返回函數(shù)正常的返回值,如果執(zhí)行超時(shí)則會(huì)拋出錯(cuò)誤信息。

# -*- coding: utf-8 -*-
from threading import Thread
import time
class TimeoutException(Exception):
  pass
ThreadStop = Thread._Thread__stop#獲取私有函數(shù)
def timelimited(timeout):
  def decorator(function):
    def decorator2(*args,**kwargs):
      class TimeLimited(Thread):
        def __init__(self,_error= None,):
          Thread.__init__(self)
          self._error = _error
        def run(self):
          try:
            self.result = function(*args,**kwargs)
          except Exception,e:
            self._error =e
        def _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.result
    return decorator2
  return decorator
@timelimited(2)
def fn_1(secs):
  time.sleep(secs)
  return 'Finished'
if __name__ == "__main__":
  print fn_1(4)

希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Django與AJAX實(shí)現(xiàn)網(wǎng)頁(yè)動(dòng)態(tài)數(shù)據(jù)顯示的示例代碼

    Django與AJAX實(shí)現(xiàn)網(wǎng)頁(yè)動(dòng)態(tài)數(shù)據(jù)顯示的示例代碼

    這篇文章主要介紹了Django與AJAX實(shí)現(xiàn)網(wǎng)頁(yè)動(dòng)態(tài)數(shù)據(jù)顯示的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • python中xlutils庫(kù)用法淺析

    python中xlutils庫(kù)用法淺析

    在本篇文章里小編給大家整理了一篇關(guān)于python中xluntils庫(kù)用法淺析的內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python操作MongoDB數(shù)據(jù)庫(kù)的方法示例

    Python操作MongoDB數(shù)據(jù)庫(kù)的方法示例

    這篇文章主要介紹了Python操作MongoDB數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式分析了Python命令行模式下操作MongoDB數(shù)據(jù)庫(kù)實(shí)現(xiàn)連接、查找、刪除、排序等相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • miniconda3介紹、安裝以及使用教程

    miniconda3介紹、安裝以及使用教程

    Miniconda是一款小巧的python環(huán)境管理工具,安裝包大約只有50M多點(diǎn),其安裝程序中包含conda軟件包管理器和Python,下面這篇文章主要給大家介紹了關(guān)于miniconda3介紹、安裝以及使用的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • Python計(jì)算斗牛游戲概率算法實(shí)例分析

    Python計(jì)算斗牛游戲概率算法實(shí)例分析

    這篇文章主要介紹了Python計(jì)算斗牛游戲概率算法,簡(jiǎn)單介紹了斗牛游戲的原理并結(jié)合具體實(shí)例形式分析了相關(guān)的游戲概率算法,需要的朋友可以參考下
    2017-09-09
  • 解決PIP安裝第三方庫(kù)報(bào)錯(cuò)SSL: CERTIFICATE_VERIFY_FAILED問(wèn)題

    解決PIP安裝第三方庫(kù)報(bào)錯(cuò)SSL: CERTIFICATE_VERIFY_FAILED問(wèn)題

    這篇文章主要介紹了解決PIP安裝第三方庫(kù)報(bào)錯(cuò)SSL: CERTIFICATE_VERIFY_FAILED問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解Django中異步任務(wù)之django-celery

    詳解Django中異步任務(wù)之django-celery

    這篇文章主要介紹了詳解Django中異步任務(wù)之django-celery,本文通過(guò)場(chǎng)景分析實(shí)例圖文相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 利用Python+eval函數(shù)構(gòu)建數(shù)學(xué)表達(dá)式計(jì)算器

    利用Python+eval函數(shù)構(gòu)建數(shù)學(xué)表達(dá)式計(jì)算器

    Python?中的函數(shù)eval()?是一個(gè)非常有用的工具。在本文中,云朵君將和大家一起學(xué)習(xí)?eval()?如何工作,以及如何在?Python?程序中安全有效地使用它,需要的可以參考一下
    2022-09-09
  • 詳解python配置虛擬環(huán)境

    詳解python配置虛擬環(huán)境

    這篇文章主要介紹了python配置虛擬環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Python利用openpyxl庫(kù)遍歷Sheet的實(shí)例

    Python利用openpyxl庫(kù)遍歷Sheet的實(shí)例

    今天小編就為大家?guī)?lái)一篇Python利用openpyxl庫(kù)遍歷Sheet的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05

最新評(píng)論