孤注一掷

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

在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时,会发生以上异常

posted on 2014-03-10 15:13  孤注一掷  阅读(2599)  评论(0编辑  收藏  举报