Документация Engee

Интерфейс командной строки

Использование аргументов внутри скриптов

При запуске скрипта с помощью julia в него можно передать дополнительные аргументы:

$ julia script.jl arg1 arg2...

Эти дополнительные аргументы командной строки передаются в глобальной константе ARGS. Имя самого скрипта передается в глобальной константе PROGRAM_FILE. Обратите внимание: константа ARGS также задается при вычислении выражения Julia, переданного через командную строку с помощью параметра -e (см. выходные данные справки julia ниже), но константа PROGRAM_FILE будет пустой. Например, вывести только аргументы, переданные в скрипт, можно так.

$ julia -e 'println(PROGRAM_FILE); for x in ARGS; println(x); end' foo bar

foo
bar

Этот код можно также поместить в скрипт и запустить:

$ echo 'println(PROGRAM_FILE); for x in ARGS; println(x); end' > script.jl
$ julia script.jl foo bar
script.jl
foo
bar

С помощью разделителя -- можно отделить аргументы командной строки, предназначенные для файла скрипта, от аргументов, предназначенных для Julia:

$ julia --color=yes -O -- script.jl arg1 arg2..

Дополнительные сведения о написании скриптов Julia см. в разделе Скрипты.

Параллельный режим

Julia можно запустить в параллельном режиме с помощью параметра -p или --machine-file. Параметр -p n запускает дополнительно n рабочих процессов, а --machine-file file — рабочий процесс для каждой строки в файле file. Компьютеры, указанные в аргументе file, должны быть доступны по протоколу ssh без пароля, причем среда Julia должна быть установлена в расположении текущего хоста. Каждый компьютер указывается в следующей форме: [count*][user@]host[:port] [bind_addr[:port]]. По умолчанию user — это текущий пользователь, а port — стандартный SSH-порт. count — это количество рабочих процессов, порождаемых на узле (по умолчанию 1). Необязательный элемент bind-to bind_addr[:port] определяет IP-адрес и порт, которые другие рабочие процессы должны использовать для подключения к данному процессу.

Файл запуска

Код, который должен выполняться при каждом запуске Julia, можно поместить в файл ~/.julia/config/startup.jl:

$ echo 'println("Greetings! 你好! 안녕하세요?")' > ~/.julia/config/startup.jl
$ julia
Greetings! 你好! 안녕하세요?

...

Обратите внимание: каталог ~/.julia должен существовать после первого запуска Julia, однако папку ~/.julia/config и файл ~/.julia/config/startup.jl может потребоваться создать вручную.

Чтобы код запуска выполнялся только в REPL Julia, используйте atreplinit в startup.jl:

atreplinit() do repl
    # ...
end

Параметры командной строки для Julia

Так же как программы на perl и ruby, запускать код Julia с указанием параметров можно разными способами:

julia [switches] -- [programfile] [args...]

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

Параметр Описание

-v, --version

Выводит сведения о версии.

-h, --help

Выводит параметры командной строки (содержимое данной таблицы).

--help-hidden

Редкие параметры, не отображаемые при использовании параметра -h

--project[={<dir>|@.}]

Устанавливает каталог <dir> в качестве домашнего проекта или среды. При использовании значения по умолчанию @. в родительских каталогах ищется файл Project.toml или JuliaProject.toml.

-J, --sysimage <file>

Запуск с использованием указанного файла образа системы

-H, --home <dir>

Задает расположение исполняемого файла julia.

--startup-file={yes*|no}

Загружает файл JULIA_DEPOT_PATH/config/startup.jl. Если переменная среды JULIA_DEPOT_PATH не задана, загружает файл ~/.julia/config/startup.jl.

--handle-signals={yes*|no}

Включает или отключает обработчики сигналов Julia по умолчанию.

--sysimage-native-code={yes*|no}

Использует машинный код из образа системы, если он доступен.

--compiled-modules={yes*|no}

Включает или отключает инкрементную предварительную компиляцию модулей.

--pkgimages={yes*|no}

Включает или отключает использование кэширования машинного кода в форме pkgimages.

-e, --eval <expr>

Вычисляет выражение <expr>.

-E, --print <expr>

Вычисляет выражение <expr> и выводит результат.

-L, --load <file>

Немедленно загружает файл <file> на всех процессорах.

-t, --threads {N|auto}

Активирует N потоков; при значении auto производится попытка вывести подходящее количество потоков по умолчанию, но особенности поведения могут в будущем измениться. В настоящее время при значении auto учитывается количество ЦП, назначенных данному процессу Julia посредством интерфейса присваивания привязки, характерного для ОС (Linux или Windows), если он поддерживается. Если он не поддерживается (macOS) либо если привязка процессов не настроена, учитывается количество потоков ЦП.

-p, --procs {N|auto}

Запускает N дополнительных локальных рабочих процессов (N — целое число). При использовании значения auto количество запускаемых рабочих процессов равно количеству локальных потоков ЦП (логических ядер).

--machine-file <file>

Запускает процессы на узлах, перечисленных в <file>.

-i

Интерактивный режим; REPL выполняется, isinteractive() имеет значение true.

-q, --quiet

Запуск без сообщений: баннер не выводится, предупреждения REPL скрываются.

--banner={yes|no|auto*}

Включает или отключает загрузочный баннер.

--color={yes|no|auto*}

Включает или отключает цветной текст.

--history-file={yes*|no}

Загружает или сохраняет историю.

--depwarn={yes|no*|error}

Включает или отключает предупреждения о синтаксисе и выводе методов из использования (при использовании значения error вместо предупреждений выдаются ошибки).

--warn-overwrite={yes|no*}

Включает или отключает предупреждения о перезаписи методов.

--warn-scope={yes*|no}

Включает или отключает предупреждение о неоднозначной области верхнего уровня.

-C, --cpu-target <target>

Ограничивает использование функций ЦП на уровне <target>. Чтобы просмотреть доступные варианты, задайте значение help.

-O, --optimize={0,1,2*,3}

Задает уровень оптимизации (уровень 3, если параметр -O используется без указания уровня) ($).

--min-optlevel={0*,1,2,3}

Задает нижнюю границу для оптимизации на уровне модулей.

-g, --debug-info={0,1*,2}

Задает уровень создаваемой отладочной информации (уровень 2, если параметр -g используется без указания уровня) ($).

--inline={yes|no}

Определяет, разрешено ли встраивание, включая переопределение объявлений @inline.

--check-bounds={yes|no|auto*}

Определяет, выполняются ли проверки границ всегда, никогда или с учетом объявлений @inbounds ($).

--math-mode={ieee,fast}

Включает или отключает небезопасные оптимизации значений с плавающей запятой (переопределяет объявление @fastmath).

--code-coverage[={none*|user|all}]

Подсчитывает количество выполнений строк исходного кода (если значение не указано, используется значение user).

--code-coverage=@<path>

Подсчитывает выполнения, но только в файлах, находящих по указанному пути или в указанном каталоге. Для выбора этого параметра требуется префикс @. Если после символа @ нет пути, отслеживается текущий каталог.

--code-coverage=tracefile.info

Добавляет информацию о покрытии кода в файл трассировки LCOV (имя файла поддерживает токены формата).

--track-allocation[={none*|user|all}]

Подсчитывает количество байтов, выделяемых каждой строкой исходного кода (если значение не указано, используется значение user).

--track-allocation=@<path>

Подсчитывает байты, но только в файлах, находящих по указанному пути или в указанном каталоге. Для выбора этого параметра требуется префикс @. Если после символа @ нет пути, отслеживается текущий каталог.

--bug-report=KIND

Запускает сеанс отчета об ошибках. Может использоваться для запуска REPL, выполнения скрипта или вычисления выражений. Сначала пытается использовать файл BugReporting.jl, установленный в текущей среде. Если попытка не удается, применяется последний совместимый файл BugReporting.jl. Дополнительные сведения см. в описании параметра --bug-report=help.

--compile={yes*|no|all|min}

Включает или отключает JIT-компилятор либо запрашивает исчерпывающую или минимальную компиляцию.

--output-o <name>

Создает объектный файл (включая данные образа системы).

--output-ji <name>

Создает файл данных образа системы (.ji).

--strip-metadata

Удаляет строки docstring и информацию о расположении исходного кода из образа системы.

--strip-ir

Удаляет промежуточное представление (IR) скомпилированных функций.

--output-unopt-bc <name>

Создает неоптимизированный битовый код LLVM (.bc).

--output-bc <name>

Создает битовый код LLVM (.bc).

--output-asm <name>

Создает файл сборки (.s).

--output-incremental={yes|no*}

Создает добавочный (неполный) файл выходных данных.

--trace-compile={stderr,name}

Выводит на экран операторы предварительной компиляции для методов, компилируемых во время выполнения, или сохраняет их по указанному пути.

--image-codegen

Принудительно генерирует код в режиме создания образа

Совместимость: Julia 1.1

В Julia 1.0 при использовании параметра --project=@. по умолчанию поиск файла Project.toml не производился из корневого каталога репозитория Git. Начиная с версии Julia 1.1 такой поиск производится.