我正在使用集群并使用Python进行一些计算。
但是,python脚本在完成或被杀之前不会打印任何内容。
我已经检查了一些方法(来自Disable output buffering)
-u
命令行开关sys.stdout
PYTHONUNBUFFERED
env var sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
但这些都不起作用。
python版本是2.7.8,2.7.3和2.4.2(系统上有三个版本,在运行之前必须放入PATH)
另外,因为群集使用NFS,所以我在多台机器中拥有完全相同的python。但是在一台机器上,它打印无缓冲(至少在结束前打印一些东西),没有任何设置(没有PYTHONUNBUFFERD)。在其他机器上它没有,这让我更加困惑。
我的测试脚本是
import os,sys,time
for i in range(100):
print(i)
time.sleep(1)
和
import os,sys,time
sys.stdout = os.fdopen(sys.stdout.fileno(),'w',0)
for i in range(100):
print(i)
time.sleep(1)
和
import os,sys,time
for i in range(100):
print(i)
sys.stdout.flush()
time.sleep(1)
有没有其他方法可以使Python打印无缓冲(或者更合理地缓冲,比如缓冲一行)而无需修改Python代码(因为它们有很多)?感谢。