Julia 在循环打印消息之前等待函数完成

wpk*_*kzz 5 loops function julia

我在 Julia 中有一个函数需要在循环中执行操作。一个参数被传递给循环,这个参数越大,函数越慢。我想有一条消息来知道它在哪个迭代中,但似乎 Julia 在打印任何东西之前等待整个函数完成。这是 Julia 1.4。这种行为不在 Julia 1.3 上。一个例子是这样的

function f(x)
   rr=0.000:0.0001:x
   aux=0
   for r in rr
      print(r, " ")
      aux+=veryslowfunction(r)
   end
  return aux
end
Run Code Online (Sandbox Code Playgroud)

事实上,当调用 f 时,它在完成之前不会打印任何内容。

Prz*_*fel 6

您需要在print命令后添加:

flush(stdout)
Run Code Online (Sandbox Code Playgroud)

解释

进程的标准输出通常被缓冲。特定的缓冲区大小和行为取决于您的系统设置和终端类型。通过刷新缓冲区,您可以确保将内容实际发送到终端。

  • 我复制了你的例子,在我的机器上我不需要冲洗。代码的行为在不同的操作系统和控制台上会有所不同。但这种“奇怪”并不是 Julia 特有的。我的答案“flush(stdout)”对您有用吗? (2认同)