更改 redirect_stdout 上下文
Change a redirect_stdout context
对于上下文,我正在使用多处理和 运行 几个子进程,它们可能会在 stdout 上打印它们正在做的事情的日志。由于它们可能同时打印,导致日志非常混乱,我使用的是
from contextlib import redirect_stdout
for task in task_list:
with redirect_stdout(buffer):
(do some stuff)
with lock_stdout:
print(buffer)
结构。这样,他们只在完成任务后才打印,而且效果很好。现在,在某些特定条件下,我希望能够在标有“(做一些事情)”的上下文中在 stdout 上打印一些东西,但是我能够将任何东西打印到 stdout 的唯一方法是通过使用警告,这是很脏的。有没有一种优雅的方法可以暂时将 stdtout 重定向回 stdout?
您可以在 运行 您的“东西”之前将 sys.stdout 存储到变量(可能是全局变量)中,然后使用 print("stuff", file=real_stdout)
对于上下文,我正在使用多处理和 运行 几个子进程,它们可能会在 stdout 上打印它们正在做的事情的日志。由于它们可能同时打印,导致日志非常混乱,我使用的是
from contextlib import redirect_stdout
for task in task_list:
with redirect_stdout(buffer):
(do some stuff)
with lock_stdout:
print(buffer)
结构。这样,他们只在完成任务后才打印,而且效果很好。现在,在某些特定条件下,我希望能够在标有“(做一些事情)”的上下文中在 stdout 上打印一些东西,但是我能够将任何东西打印到 stdout 的唯一方法是通过使用警告,这是很脏的。有没有一种优雅的方法可以暂时将 stdtout 重定向回 stdout?
您可以在 运行 您的“东西”之前将 sys.stdout 存储到变量(可能是全局变量)中,然后使用 print("stuff", file=real_stdout)