【python裝飾器】強大的python裝飾器(一)

直接上裝飾器代碼:

import time
import threading

def api(func):
    def wrap_func(*args, **kwargs):
        return func(*args, **kwargs)
    return wrap_func

def wrap_threading(func):
    def wrap_func(*args, **kwargs):
        p = threading.Thread(target=func, args=args, kwargs=kwargs)
        p.setDaemon(True)
        p.start()
    return wrap_func

def try_run(max_try_cnt=3):
    def wrap_outer(func):
        def wrap_inner(*args, **kwargs):
            try_cnt = 0
            is_succ = True
            while 1:
                try:
                    content = func(*args, **kwargs)
                    if not content:
                        raise
                    return True, content
                except:
                    if try_cnt < max_try_cnt:
                        try_cnt += 1
                        continue
                    return False, None
        return wrap_inner
    return wrap_outer
    
def run_period(interval=1, name=""):
    def wrap_inner(func):
        def wrap_outer(*args, **kwargs):
            while 1:
                flag = func(*args, **kwargs)
                if flag == -1:
                    print "run_period: break"
                    break
                if interval:
                    time.sleep(interval)
        return wrap_outer
    return wrap_inner

用法:

見上一篇博客:python如何動態的更新引用參數

發佈了4 篇原創文章 · 獲贊 0 · 訪問量 2165
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章