解决方法
通常,put不会立即写入STDOUT,而是内部缓冲字符串,并将输出写入更大的块.这是因为IO操作较慢,通常避免将每个单个字符立即写入控制台更为有意义.
这种行为在某些情况下会导致问题.想象一下,您想要运行一个输出点的循环,然后进行一些广泛的计算.运行该代码的结果可能是一段时间没有任何输出,然后突然一次打印出多个点.
为避免这种情况,请立即将其写入STDOUT,您可以将STDOUT设置为同步模式,如下所示:
STDOUT.sync = true
从docs:
When sync mode is true,all output is immediately flushed to the underlying operating system and is not buffered internally.