Заставить IPython принимать команды из сетевого сокета и выполнять в основном потоке - PullRequest
2 голосов
/ 09 декабря 2011

Я пытаюсь подключить свой Vim, чтобы я мог отправлять команды работающему экземпляру IPython. Есть сценарии для этого, но они устарели. Я пытаюсь написать новый.

Мой главный камень преткновения сейчас - это правильный способ заставить IPython прослушивать входящие сетевые соединения в фоновом режиме (т. Е. Другой поток, приветствуются другие решения) и выполнять полученные команды в главном потоке, Более ранние сценарии не выполняли команды в основном потоке и регулярно вызывали сбой, например, matplotlib.

Я вижу, что twisted предоставляет ThreadedSelectReactor, но я не знаю, как правильно его использовать с IPython.

Обновление

Пример сценария:

2 Windows открыта, один - терминал с IPython, другой - Vim, где вы редактируете скрипт Python. Вы выбираете строку в Vim и нажимаете C-Enter, Vim отправляет строку в экземпляр IPython, который выполняет ее и печатает результат в терминале IPython, как если бы вы скопировали / вставили строку в себя.

(пользователи Matlab знают, насколько полезной может быть эта функция.)

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

Павел Иванов сделал это несколько месяцев назад, используя интерфейс IPython zmq.Это называется vim-ipython .

1 голос
/ 09 декабря 2011

У меня сложилось впечатление, что IPython использует или перешел на использование zmq в качестве протокола обмена сообщениями.По крайней мере, когда я работаю в версии 0.11, доступна поддержка zmq.

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

Загляните в этот блог: http://ipythonzmq.blogspot.com/ и, конечно: http://www.zeromq.org/

...