使用Python的
print()
(或者据我所知,任何其他控制台输出生成)函数在循环结构中,并通过reticulate在R中运行代码时,输出只会在执行完成后打印。例如,以下循环每次迭代后都会睡眠1.5秒;在循环结束后,所有的运行数字都会一起打印出来。当将Python代码保存到单独的.py文件中,然后运行reticulate::py_run_file()
,情况也是如此。library(reticulate)
py_run_string("
import time
for i in range(5):
print(str(i))
time.sleep(1.5) # sleep for 1.5 sec
")
有人知道这个行为来自哪里,如果可能的话,如何规避它吗?
nohup thisscript.py
运行它时,您会发现输出将被保留,直到脚本完成。这只是我的经验。不幸的是,我不知道为什么。 - lokiprint()
调用之后立即插入sys.stdout.flush()
确实在每次迭代时向控制台发送状态更新。谢谢! - fdetsch