Джулия вызывает скрипт в существующем REPL из командной строки

Я хочу запустить сценарий Julia из командной строки окна, но кажется, что каждый раз, когда я запускаю > Julia code.jl, создается новый экземпляр Julia и время инициации (загрузка пакета, компиляция?) Довольно велико.

Есть ли способ пропустить это время запуска, запустив сценарий на текущем экземпляре REPL / Julia? (что обычно экономит мне 50% рабочего времени).

Я использую Julia 1.0.

Спасибо,


person Huy Tran    schedule 15.11.2018    source источник


Ответы (2)


Вы можете использовать include:

julia> include("code.jl")
person fredrikekre    schedule 15.11.2018
comment
Привет, это должно быть с терминала (cmd), а не с текущего запущенного julia REPL. - person Huy Tran; 15.11.2018

Есть несколько возможных решений. Все они включают разные способы отправки команд в запущенный сеанс Julia. Первые несколько, которые приходят мне в голову:

Во всех решениях вы можете отправить команду Джулии, выполнив какую-либо команду оболочки.

Независимо от того, какой подход вы предпочитаете, ключевой задачей является очистка кода для правильной обработки ошибок (то есть ситуация, когда вы отправляете некоторую команду в сеанс Julia, и он дает сбой, или когда вы отправляете запросы быстрее, чем Julia может их обработать). Это особенно важно, если вы хотите, чтобы сервер Julia был отключен от терминала.

В качестве побочного примечания: при использовании распределенного модуля из stdlib в Julia для многопроцессорной обработки вы на самом деле делаете очень похожую вещь (но связь - это Джулия с Джулией), поэтому вы также можете посмотреть, как этот модуль реализован, чтобы понять, как он осуществимо.

person Bogumił Kamiński    schedule 15.11.2018
comment
Спасибо. Я займусь этим. В настоящее время я использую «while (true) sleep (1)» для прослушивания файла сигнала триггера, что, как я полагаю, похоже на сервер. - person Huy Tran; 16.11.2018
comment
Да, это что-то вроде решения 4, которое я описал, в котором синхронизация выполняется через файловую систему. - person Bogumił Kamiński; 16.11.2018