如何在任务执行期间(实时)更新 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.
我正在使用 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.