最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

# -*- 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)

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

相關(guān)文章

  • Python創(chuàng)建多線程的兩種常用方法總結(jié)

    Python創(chuàng)建多線程的兩種常用方法總結(jié)

    這篇文章主要為大家詳細(xì)介紹了Python中創(chuàng)建多線程的兩種常用方法,文中的示例代碼簡潔易懂,對我們掌握Python有一定的幫助,需要的可以收藏一下
    2023-05-05
  • 基于Python實現(xiàn)Windows桌面定時提醒休息程序

    基于Python實現(xiàn)Windows桌面定時提醒休息程序

    這篇文章為大家詳細(xì)主要介紹了如何基于Python實現(xiàn)簡單的Windows桌面定時提醒休息程序,文中的示例代碼講解詳細(xì),有需要的可以參考一下
    2024-11-11
  • 基于python編寫的shell腳本詳細(xì)講解

    基于python編寫的shell腳本詳細(xì)講解

    python相對于linux的shell腳本來說更簡單,功能更強(qiáng)大,代碼量也少很多,這里就為大家分享一下
    2021-09-09
  • Python3爬蟲中Splash的知識總結(jié)

    Python3爬蟲中Splash的知識總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于Python3爬蟲中Splash的知識總結(jié)內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-07-07
  • matplotlib部件之矩形選區(qū)(RectangleSelector)的實現(xiàn)

    matplotlib部件之矩形選區(qū)(RectangleSelector)的實現(xiàn)

    這篇文章主要介紹了matplotlib部件之矩形選區(qū)(RectangleSelector)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Python設(shè)置和解除Word文檔保護(hù)的實現(xiàn)步驟

    Python設(shè)置和解除Word文檔保護(hù)的實現(xiàn)步驟

    在日常工作和學(xué)習(xí)中,我們經(jīng)常需要使用Word文檔來記錄和分享重要的信息,為了確保文檔內(nèi)容的安全性和完整性,了解如何保護(hù)和取消保護(hù)Word文檔顯得尤為重要,這篇博客將詳細(xì)介紹如何使用Python設(shè)置和解除Word文檔的保護(hù),需要的朋友可以參考下
    2025-02-02
  • Python的Flask框架中Flask-Admin庫的簡單入門指引

    Python的Flask框架中Flask-Admin庫的簡單入門指引

    這篇文章主要介紹了一個Python的Flask框架中Flask-Admin庫簡單入門的指引,包括介紹和簡單的部署等,需要的朋友可以參考下
    2015-04-04
  • python輸出帶顏色字體實例方法

    python輸出帶顏色字體實例方法

    在本篇文章里小編給大家整理了關(guān)于python輸出帶顏色字體實例以及相關(guān)代碼,有需要的朋友們可以學(xué)習(xí)參考下。
    2019-09-09
  • Python中的字符串判斷

    Python中的字符串判斷

    本文通過實例代碼介紹了Python中的字符串判斷,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-10-10
  • python用裝飾器自動注冊Tornado路由詳解

    python用裝飾器自動注冊Tornado路由詳解

    這篇文章主要給大家介紹了python用裝飾器自動注冊Tornado路由,文中給出了三個版本的解決方法,有需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02

最新評論

普格县| 大石桥市| 沿河| 夏津县| 攀枝花市| 江孜县| 搜索| 麦盖提县| 凤台县| 江西省| 安陆市| 淅川县| 永城市| 本溪市| 高邮市| 德格县| 灌南县| 牙克石市| 高碑店市| 永靖县| 石屏县| 德保县| 仁化县| 沧州市| 德阳市| 平度市| 葫芦岛市| 高雄县| 四川省| 雅安市| 新沂市| 沁源县| 信宜市| 嘉定区| 乐至县| 搜索| 宜都市| 奈曼旗| 天门市| 子长县| 成武县|