在Python 2.7.3运行环境下有两个虚拟机执行环境,分别为:
Python.exe: 该虚拟机以控制台方式启动,程序后台会打开标准的Windows控制台窗口
Pythonw.exe: 该虚拟机以标准WIN32 GUI方式启动,不会打开控制台窗口
若使用Pythonw.exe来执行py程序,则需要注意一个问题:如果在py程序中使用了print语句,当print语句填满stdout的输出缓冲后,pythonw.exe会抛出以下异常:
IOError: [Errno 9] Bad file descriptor
然后pythonw.exe则会悄悄地退出而不报告任何错误,如果是线程中使用了print,则会导致该线程悄悄地退出。这个问题有以下再个解决方案:
1. 刷新控制台缓冲
2. 将stdout重定向输出到文件或者空设备
请参阅:
http://bugs.python.org/issue706263
当向stdout写入的字节数赶过4KB时,会发生以上异常