statcktrace метода класса не печатается в Python - PullRequest
0 голосов
/ 25 апреля 2019

В классе есть @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 вызывает строку 331 model.py (в строке 331 я добавил «кто меня вызвал»), содержимое моделей / __ init __ .py в следующей строке 6: написано:

from allennlp.models.model import Model

Это также не вызов метода _load с какими-либо параметрами.
Предложения, пожалуйста, как мне найти, кто передает значение параметра cuda_device в функцию загрузки?

1 Ответ

2 голосов
/ 25 апреля 2019

Вы ввели синтаксическую ошибку в свой код.Это означает, что ваш класс не может быть импортирован, не говоря уже о запуске.

Если вы хотите увидеть трассировку стека времени выполнения, то внесите ошибку времени выполнения, а не синтаксическую ошибку.

a = 1 / 0

должен сделать это.

...