gpt4 book ai didi

python - 动态重定向函数的标准输出

转载 作者:太空宇宙 更新时间:2023-11-03 18:20:02 24 4
gpt4 key购买 nike

假设我有一个 python 函数 foo。我想在后台运行它(使用 threadingmultiprocessing),并使其所有 stdout 和 stderr 实时可用,因为它是由 foo< 生成的。如果 foo 是一个 shell 命令,我可以通过使用 subprocess.Popen 和生成器来实现这一点,如 here 中所述。 ,但我需要使用 python 函数来做到这一点multiprocessing 模块非常适合生成新进程,但似乎很难实时获取子进程的标准输出。

P.S:我需要使用服务器发送事件协议(protocol)将函数的标准输出重定向到生成的网页

最佳答案

就其值(value)而言,我认为这是一个坏主意,理想情况下您应该重写 foo 函数以以其他方式返回其输出。也就是说...

如果foo只是一个标准的纯Python函数,仅使用标准Python函数来生成其输出(printfile.write) ,那么您可以将其标准输出重定向到 StringIO 或类似的东西。

Python 2.x 示例:

import sys, StringIO

def foo():
print "Haha! You can't capture this output!"
print>>sys.stderr, "... Or this!"

output = StringIO.StringIO()

saved, sys.stdout = sys.stdout, output
sys.stderr = output
foo()
sys.stdout = sys.stderr = saved

print output.getvalue()

关于python - 动态重定向函数的标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24297042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com