Python 为什么stderr打印比stdout晚?

Python 为什么stderr打印比stdout晚?,python,stdout,stderr,Python,Stdout,Stderr,stderr没有缓冲区,stdout有缓冲区。 stderr不晚于stdout 我试过: 导入系统 sys.stdout.write(“stdout1”) sys.stderr.write(“stderr1”) sys.stdout.write(“stdout2”) sys.stderr.write(“stderr2”) 运行python test.py 结果: stderr1 stderr2 stdout1 stdout2 stdout1 stderr1 stdout2 stderr2

stderr
没有缓冲区,
stdout
有缓冲区。
stderr
不晚于
stdout

我试过:

导入系统 sys.stdout.write(“stdout1”) sys.stderr.write(“stderr1”) sys.stdout.write(“stdout2”) sys.stderr.write(“stderr2”) 运行
python test.py

结果:

stderr1 stderr2 stdout1 stdout2
stdout1 stderr1 stdout2 stderr2
stdout1
stderr1
stdout2
stderr2
它按预期工作


导入系统 sys.stdout.write(“stdout1”) sys.stderr.write(“stderr1”) sys.stdout.write(“stdout2”) sys.stderr.write(“stderr2”) 运行
python-u test.py

结果:

stderr1 stderr2 stdout1 stdout2
stdout1 stderr1 stdout2 stderr2
stdout1
stderr1
stdout2
stderr2
它按预期工作


导入系统 sys.stdout.write(“stdout1\n”) sys.stderr.write(“stderr1\n”) sys.stdout.write(“stdout2\n”) sys.stderr.write(“stderr2\n”) 运行
python test.py

结果:

stderr1 stderr2 stdout1 stdout2
stdout1 stderr1 stdout2 stderr2
stdout1
stderr1
stdout2
stderr2
它按预期工作


导入系统 sys.stdout.write(“stdout1”) sys.stderr.write(“stderr1”) sys.stdout.write(“stdout2”) sys.stderr.write(“stderr2”) 打印() string=“” 对于范围(10)内的i: string=string+str(i)+“\n” 打印(字符串) 实际结果:

stdout1 stdout2
0
1
2
3
4
5
6
7
8
9

stderr1 stderr2
我认为应该是:

stderr1 stderr2 stdout1 stdout2
0
1
2
3
4
5
6
7
8
9

在Python3.x中,stderr是行缓冲区
在Python2.x中,stderr是无缓冲的



如果运行
python test.py-u
?是。我已经解决了这个问题,谢谢你的帮助。然而,我很烦恼。你有空帮我吗?