睡眠发生在任何输出之前,而不是介于两者之间
我在尝试写一个程序,依次打印一行文本、等待一段时间、再打印一行文本,等等。我已经尝试了这个:
(print "test")
(sleep 1)
(print "test 2")
(sleep 1)
(print "test 3")
但这只会在执行起始阶段产生一个2 秒的延迟,然后一次性打印出所有输出。我已经尝试过使用 finish-output,但似乎并没有什么作用,用 format 代替print也同样没有帮助。
解决方案
问题出在输出缓冲区。向 *STANDARD-OUTPUT* 写入时,缓冲区默认只有在写入换行符时才会被刷新。由于 print 在输出的起始处就写入换行符,它会刷新前一次调用的输出,而当前的输出仍然处于缓冲状态。
在每次调用 print 之后添加 (force-output) 就能解决。这样就会立即刷新缓冲区。
(defun test-print ()
(print "test")
(force-output)
(sleep 1)
(print "test 2")
(force-output)
(sleep 1)
(print "test 3"))
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。