Julia 异步块:无法通过命令提示符获得任何结果
Julia async block: couldn't get any result with command prompt
我正在使用 Julia,我的 IDE 是 Juno,系统是 Linux。
这是我的脚本:
#test.jl
function testShow(msg)
println(msg)
end
#@async begin # 1
testShow("aaa")
#end # 2
println("bbb")
如果我在Juno中运行,我可以得到如下结果:
aaa
bbb
如果我删除注释 #1 和 #2,这意味着 testShow("aaa")
在 async
块中,而 运行 在 Juno 中,我可以在下面得到另一个结果:
bbb
aaa
现在,我需要用命令行运行它。所以我打开一个终端并输入以下命令:
julia /home/myname/Julia/test.jl
如果 #1 和 #2 被评论,我可以得到预期的结果:
aaa
bbb
但是,如果我去掉这两条评论,我会得到这样的结果:
bbb
为什么? @async
块中的代码不能用命令行执行?
您需要等待 @async
任务完成,您没有在命令行上看到输出,因为程序在任务完成之前就退出了。一种方法是捕获 @async
返回的任务并在退出程序之前等待任务。
function testShow(msg)
println(msg)
end
t = @async begin
testShow("aaa")
end
println("bbb")
wait(t)
我正在使用 Julia,我的 IDE 是 Juno,系统是 Linux。
这是我的脚本:
#test.jl
function testShow(msg)
println(msg)
end
#@async begin # 1
testShow("aaa")
#end # 2
println("bbb")
如果我在Juno中运行,我可以得到如下结果:
aaa
bbb
如果我删除注释 #1 和 #2,这意味着 testShow("aaa")
在 async
块中,而 运行 在 Juno 中,我可以在下面得到另一个结果:
bbb
aaa
现在,我需要用命令行运行它。所以我打开一个终端并输入以下命令:
julia /home/myname/Julia/test.jl
如果 #1 和 #2 被评论,我可以得到预期的结果:
aaa
bbb
但是,如果我去掉这两条评论,我会得到这样的结果:
bbb
为什么? @async
块中的代码不能用命令行执行?
您需要等待 @async
任务完成,您没有在命令行上看到输出,因为程序在任务完成之前就退出了。一种方法是捕获 @async
返回的任务并在退出程序之前等待任务。
function testShow(msg)
println(msg)
end
t = @async begin
testShow("aaa")
end
println("bbb")
wait(t)