【问题标题】:Julia async block: couldn't get any result with command promptJulia 异步块:无法使用命令提示符获得任何结果
【发布时间】:2015-12-01 18:22:55
【问题描述】:

我与 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

但是,如果我去掉这两个 cmets,我会得到这样的结果:

bbb

为什么? @async块中的代码不能用命令行执行?

【问题讨论】:

    标签: asynchronous command-line command-prompt julia


    【解决方案1】:

    您需要等待@async 任务完成,您在命令行上看不到输出,因为程序在任务完成之前就退出了。一种方法是捕获@async 返回的任务并在退出程序之前等待该任务。

    function testShow(msg)
        println(msg)
    end
    
    t = @async begin
        testShow("aaa")
    end
    
    println("bbb")
    wait(t)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 2021-12-31
      • 1970-01-01
      • 2021-08-18
      • 1970-01-01
      相关资源
      最近更新 更多