Вопрос о «нелинейном» поведении интерпретатора Python в JupyterPython

Программы на Python
Anonymous
Вопрос о «нелинейном» поведении интерпретатора Python в Jupyter

Сообщение Anonymous »

Я запускаю следующий код как удаленно на компьютере с Linux через ssh, так и на том же компьютере с Linux, что и блокнот Jupyter, доступ к которому осуществляется через браузер.

Код: Выделить всё

import cv2
import pdf2image

def minimalFun(pdf_filepath, make_me_suffer = False):
print("Now I start.")
images = pdf2image.convert_from_path(pdf_filepath)
print("Pdf read.")

if make_me_suffer:
cv2.namedWindow('test',0)

print("I finished!")

minimalFun('Test.pdf', make_me_suffer = True)
Меня смущает разница в поведении интерпретатора Pyhton в Jupyter и при использовании в командной строке.
В блокноте Jupyter
При настройке make_me_suffer = False код будет просто распечатан

Код: Выделить всё

Now I start.
Pdf read.
I finished!
это означает, в частности, что функция pdf2image.convert_from_path выполнена успешно. Однако если для make_me_suffer установлено значение True, код будет просто напечатан

Код: Выделить всё

Now I start.
а затем сообщите, что ядро ​​умерло и будет перезагружено. В частности, ядро ​​умерло уже с функцией pdf2image.convert_from_path.
В командной строке
Как и ожидалось, с настройкой make_me_suffer = False код будет просто печатать

Код: Выделить всё

Now I start.
Pdf read.
I finished!
но теперь, когда флаг установлен на make_me_suffer = True, мы получаем

Код: Выделить всё

Now I start.
Pdf read.
: cannot connect to X server
это означает, что здесь функция pdf2image.convert_from_path снова завершилась успешно.
Вопрос:

Интерпретатор Jupyter «заглядывает вперед», чтобы увидеть, появится ли позже команда, требующая системы x-windowing и изменяющая интерпретацию текущих данных на основе информации. Если да, то почему? Это обычное явление? Происходит ли это с функциями, загруженными из других файлов? Что происходит?

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

Подробнее здесь: https://stackoverflow.com/questions/633 ... in-jupyter

Вернуться в «Python»