如何在任务执行期间(实时)更新 stdout.txt?

How to update stdout.txt during task execution (real time)?

我正在使用 Azure Batch 执行一个具有不同步骤的流程,该流程已在 Python 中编程。我想在 Azure Batch 的 stdout.txt 文件中记录我的流程所处的步骤。

到目前为止,我正在打印我所在的步骤。有了这个,一旦批处理任务完成,打印将出现在 stdout.txt 中。但是,我找不到实时更新stdout.txt文件的方法。

例如,假设我有以下代码片段:

print('Step 1')
# Step 1 code 
print('Step 2')
# Step 2 code 
print('Step 3')
# Step 3 code 

执行完我的整个任务后,stdout.txt 将如下所示:

Step 1

Step 2

Step 3

但是,在此过程中,如果我尝试访问该文件,它将是空的。

我想知道是否有任何方法可以实时获取这些打印件,而不必等到任务完成后才写下来,即当任务仍在第 1 步时,唯一的一行在我的 stdout.txt 中是:

Step 1

并且文件将在新步骤开始时更新(因此打印)。有什么想法或提示吗?

这很可能是您的程序缓冲输出的副作用。如果您需要立即查看 stdout 流中的数据,您可能需要刷新。您可以尝试 flush stdout in Python or start Python in unbuffered mode.