【发布时间】:2020-06-29 08:40:53
【问题描述】:
在循环结构中使用 Python 的 print()(或据我所知,任何其他控制台输出生成)函数并通过 R 中的 reticulate 运行代码,输出仅在执行完毕。例如,采用以下循环,每次迭代后进入休眠 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
")
有谁知道这种行为是从哪里来的,如果可能的话,如何规避它?
【问题讨论】:
-
这似乎是 python 的问题。当您将其放入脚本并使用
nohup thisscript.py运行它时,您会看到输出将被保留,直到脚本完成。这只是根据我的经验。不幸的是,我不知道为什么 -
太棒了,在
print()调用之后插入sys.stdout.flush()确实会在每次迭代时向控制台发送状态更新。谢谢!
标签: python r reticulate console-output