[英]Dynamically Defining a Dummy Decorator
我正在使用一個名為https://github.com/rkern/line_profiler的好工具
要使用它,您需要在腳本中的多個位置放置一個裝飾器@profile
以指示應分析哪些函數。 然后你通過kernprof -l script_to_profile.py
執行腳本
顯然,當通過python script_to_profile.py
自行運行腳本時,裝飾器未定義,因此腳本崩潰。
我知道如何定義標識裝飾器,我可以從命令行傳遞一個標志,並根據標志的設置方式在主腳本中定義它。 但是,我不知道如何將裝飾器定義(或標志)傳遞給我加載的模塊,以便它們在加載時不會崩潰。 有任何想法嗎?
def profile(func):
return func
一個非常簡單的方法是檢查命名profile
存在,如果不存在,則將其定義為您的身份裝飾器。 像這樣的東西。
try:
profile
except NameError:
def profile(func):
return func
你可以更進一步,確保它是可調用的——可能沒有必要:
import typing
try:
profile
except NameError:
profile = None
if not isinstance(profile, typing.Callable):
def profile(func):
return func
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.