我正在使用一種名為 https://github.com/rkern/line_profiler要使用它,您需要在腳本中的多個(gè)位置放置一個(gè)裝飾器,以指示應(yīng)分析哪些功能。然后通過(guò)以下方式執(zhí)行腳本@profilekernprof -l script_to_profile.py顯然,當(dāng)通過(guò) 運(yùn)行腳本本身時(shí),裝飾器未定義,因此腳本崩潰。python script_to_profile.py我知道如何定義標(biāo)識(shí)修飾器,我可以從命令行傳遞一個(gè)標(biāo)志,并根據(jù)標(biāo)志的設(shè)置方式在主腳本中定義它。但是,我不知道如何將裝飾器定義(或標(biāo)志)傳遞給我加載的模塊,以便它們?cè)诩虞d時(shí)不會(huì)崩潰。有什么想法嗎?def profile(func):
return func
1 回答

滄海一幻覺(jué)
TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊
一種非常簡(jiǎn)單的方法是檢查是否有名為名稱的東西存在,如果不存在,則將其定義為您的身份裝飾器。像這樣的東西。profile
try:
profile
except NameError:
def profile(func):
return func
你可以走得更遠(yuǎn)一點(diǎn),確保它是可調(diào)用的 —— 可能不是必需的:
import typing
try:
profile
except NameError:
profile = None
if not isinstance(profile, typing.Callable):
def profile(func):
return func
添加回答
舉報(bào)
0/150
提交
取消