Как получить «счетчик выполнений» последнего выполнения в I Python или ноутбуке Jupyter? - PullRequest
1 голос
/ 13 марта 2020
Записные книжки

I Python и Jupyter отслеживают «счетчик выполнений». Например, это показано в подсказках для ввода и вывода: In[...] и Out[...].

Как можно получить программный счетчик последнего выполнения?

Переменная Out не может использоваться для этого:

  • Out - словарь, в котором ключом считается выполнение, но только для тех ячеек, которые дали результат; обратите внимание, что не все (ячейки) исполнения должны давать результат (например, print(...)).

Переменная In кажется пригодной для использования:

  • In - список всех входов; кажется , что In[0] всегда заполняется пустой строкой, так что вы можете использовать счет выполнения на основе 1 в качестве индекса.

Однако при использовании len(In) - 1 в вашем коде вы должны принять во внимание, что счетчик выполнения кажется обновленным перед выполнением этого нового кода. Так что, на самом деле, кажется вам нужно использовать len(In) - 2 для подсчета выполнения самого последнего уже выполненного выполнения.

Вопросы:

  • Есть ли лучший способ получить текущий счетчик выполнения?
  • Можете ли вы положиться на приведенные выше наблюдения (« кажется »)?

1 Ответ

2 голосов
/ 14 марта 2020

После дальнейших раскопок я нашел (удивительно простой) ответ:

from IPython import get_ipython

ipython = get_ipython()

... ipython.execution_count ...

Это не отображается в документации по I Python, хотя можно (нужно?) Упомянуть здесь: https://ipython.readthedocs.io/en/stable/api/generated/IPython.core.interactiveshell.html (я думаю, атрибуты не задокументированы). Здесь вы найдете run_line_magic (что было упомянуто в комментарии к моему вопросу).

Я нашел этот атрибут, определив ipython, как указано выше, а затем выполнив код (TAB) для * 1011. * (но у него нет документации).

help(ipython)

предоставляет вам документацию о InteractiveShell и упоминает execution_count (хотя это не подтверждает его назначение):

 |  execution_count
 |      An int trait.
...