Как указано в документации :
Обратите внимание, что без функции-редуктора @distributed выполняется асинхронно, то есть порождает независимые задачи для всех доступных рабочих и немедленно возвращается без ожидания для завершения. Чтобы дождаться завершения, добавьте к вызову префикс @sync
. В вашем случае (который не использует функцию-редуктор) происходит следующее: @distributed
порождает задачи и сразу же возвращается. Ваши задачи настолько короткие, что в REPL вы видите их почти сразу, и не замечаете разницу с синхронным процессом (за исключением того, что, возможно, вывод смешивается с приглашением REPL).
In однако в сценарии основной процесс julia завершается сразу же после того, как он порождает задачи, и у них нет никаких причин фактически их запускать. И вы не увидите выходных данных.
Как указано в документации, используйте @sync
, чтобы дождаться завершения задач перед их существованием:
using Distributed
@sync @distributed for k = 1:4
println("Creating file ", k)
write(string("file_", k), "foo")
end