Как навести порядок выполнения кода в Jupyter Notebook? - PullRequest
2 голосов
/ 17 апреля 2020

Наблюдаемое поведение

В представленном ноутбуке Jupyter он выдает следующий вывод:

ERP at 175 ms of trial 1
Average ERP at 175 ms of all trials

, за которым следуют 2 изображения:

<display image 0>
<display image 1>

Когда выполняется следующий код:

z = sX_train[1,1,:,int(0.175*40)]
c="channels.txt"
print("ERP at 175 ms of trial 1")
topoplot(z,c)

# also compute the average ERP of all trials in first epoch at 180 ms
z = np.zeros(64)
for channel in range(0,z.shape[0]):
    z[channel] = np.mean(sX_train[:,1,channel,int(0.175*40)])
print("Average ERP at 175 ms of all trials")
topoplot(z,c)

Ожидаемое поведение

Однако я ожидаю, что результат будет:

ERP at 175 ms of trial 1
<display image 0>
Average ERP at 175 ms of all trials
<display image 1>

, если код должен был быть выполнен сверху вниз.

Анализ

Я думаю, что это некоторая асинхронная функция, поскольку для вычисления функции topoplot требуется больше времени, чем для вычисления операторов print. Однако я не могу найти что-либо о потоке или синхронизации. Быстрое и грязное решение состояло бы в том, чтобы изменить топоплот так, чтобы он возвращал что-то так, чтобы код ожидал его до того, как напечатает описание.

Вопрос

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...