Наблюдаемое поведение
В представленном ноутбуке 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 без изменения кода для построения зависимостей друг от друга?