Python 更改重定向上下文

Python 更改重定向上下文,python,python-3.x,stdout,python-multiprocessing,Python,Python 3.x,Stdout,Python Multiprocessing,对于上下文,我使用多处理并运行几个子进程,这些子进程可能会在标准输出上打印它们正在做的事情的日志。由于它们可能同时打印,导致日志非常混乱,所以我使用 from contextlib import redirect_stdout for task in task_list: with redirect_stdout(buffer): (do some stuff) with lock_stdout: print(buffer) 结构。这样,他们只

对于上下文,我使用多处理并运行几个子进程,这些子进程可能会在标准输出上打印它们正在做的事情的日志。由于它们可能同时打印,导致日志非常混乱,所以我使用

from contextlib import redirect_stdout

for task in task_list:
    with redirect_stdout(buffer):
        (do some stuff)
    with lock_stdout:
        print(buffer)

结构。这样,他们只在完成任务后才打印,效果很好。现在,在某些特定条件下,我希望能够在stdout上打印一些标记为“(do some stuff)”的内容,但是我能够将任何内容打印到stdout的唯一方法是使用警告,这非常肮脏。是否有一种优雅的方法将stdtout重定向回stdout一段时间?

您可以在运行“stuff”之前将sys.stdout存储到变量(可能是全局变量)中,并使用
print(“stuff”,file=real\u stdout)
您可以在运行“stuff”之前将sys.stdout存储到变量(可能是全局变量)中,并使用
print(“stuff”),file=real\u stdout)

很好用,谢谢。我试过“this”,但我没有注意到使用sys.stdout给了我新的缓冲区,而不是原来的(“real”)stdout。它可以工作,谢谢。我试过“this”,但我没有注意到使用sys.stdout给了我新的缓冲区,而不是原来的(“real”)stdout。