我试图将带有线程的某些程序的输出重定向到某个文件。
我尝试过跑步command > file 2&>1
,但如果command
没有停止跑步,file
仍然会是空的。
有没有办法将输出异步转储到file
?
示例 python 片段:
import _thread
def run():
raise ValueError('plah')
_thread.start_new_thread(run, ())
while True:
pass
在手动停止程序之前,运行python program.py 2> log.txt
不会产生输出。log.txt
答案1
进行输出无缓冲的。使用 Python 执行此操作的一个简单方法是设置PYTHONUNBUFFERED
:
PYTHONUNBUFFERED=1 python program.py 2>log.txt
答案2
Python 默认缓冲输出。给出-u
标志,或者放置PYTHONUNBUFFERED=yes
以避免这种情况。