没有在python中打印的类方法的堆栈跟踪

问题描述 投票:0回答:1

在类中有一个@classmethod,在导入类时会自动调用它。我想知道传递给该方法的参数。所以我故意添加了一个代码来崩溃该函数并打印堆栈跟踪。但是,它不是打印谁调用此加载方法。

我其实想知道谁在发送参数值(具体是cuda_device)

 @classmethod
    def load(cls,
             config: Params,
             serialization_dir: str,
             weights_file: str = None,
             cuda_device: int = -1) -> 'Model':

        who called me?   #line added by me to crash and print stacktrace
  File "/data/TFS/AI%20-%20Projects/MULTI_PROC/allen_ws/urls.py", line 19, in <module>
    from allen_ws import ANLP_API_SB1
  File "/data/TFS/AI%20-%20Projects/MULTI_PROC/allen_ws/ANLP_API_SB1.py", line 5, in <module>
    from allennlp.predictors.predictor import Predictor
  File "/anaconda3/envs/allennlpenv/lib/python3.6/site-packages/allennlp/predictors/__init__.py", line 9, in <module>
    from allennlp.predictors.predictor import Predictor
  File "/anaconda3/envs/allennlpenv/lib/python3.6/site-packages/allennlp/predictors/predictor.py", line 8, in <module>
    from allennlp.models import Model
  File "/anaconda3/envs/allennlpenv/lib/python3.6/site-packages/allennlp/models/__init__.py", line 6, in <module>
    from allennlp.models.model import Model
  File "/anaconda3/envs/allennlpenv/lib/python3.6/site-packages/allennlp/models/model.py", line 331
    who called me?

在上面的堆栈跟踪模型中,__ init __ .py正在调用model.py第331行(在第331行我添加了“谁叫我”),下面第6行的模型/ __ init __ .py的内容被写入:

from allennlp.models.model import Model

这也不是用任何参数调用_load方法。 建议请问,我怎样才能找到谁传递cuda_device参数值来加载函数?

python static-methods stack-trace class-method
1个回答
2
投票

您在代码中引入了语法错误。这意味着您的类无法导入,更不用说运行了。

如果要查看运行时堆栈跟踪,则会引入运行时错误,而不是语法错误。

a = 1 / 0

应该这样做。

© www.soinside.com 2019 - 2024. All rights reserved.