Spec-Zone.ru › Julia 1.9

Командная строка

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

При запуске скрипта с помощью 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 в случае его использования.

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

atreplinit() do repl
    # ...
end

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

Существует множество способов запуска кода Julia и предоставления параметров, аналогичных тем, которые доступны для perl и ruby программ:

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}] Подсчет байтов, выделенных каждой строкой исходного кода (пропуск установки эквивалентен "пользователь")
--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 Удаление строк документации и информации о расположении источника из образа системы
--strip-ir Удаление IR (промежуточного представления) скомпилированных функций
--output-unopt-bc <name> Генерация не оптимизированного LLVM bitcode (.bc)
--output-bc <name> Генерация LLVM bitcode (.bc)
--output-asm <name> Генерация файла ассемблера (.s)
--output-incremental={yes|no*} Генерация файла инкрементного вывода (а не полного)
--trace-compile={stderr,name} Печать предкомпилированных инструкций для методов, скомпилированных во время выполнения, или сохранение в путь
--image-codegen Принудительная генерация кода в режиме отображения

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

© 2009–2023 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.9/manual/command-line-interface/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API