|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
原文:
- Help on class BrokenPipeError in module builtins:
- class BrokenPipeError(ConnectionError)
- | Broken pipe.
- |
- | Method resolution order:
- | BrokenPipeError
- | ConnectionError
- | OSError
- | Exception
- | BaseException
- | object
- |
- | Methods defined here:
- |
- | __init__(self, /, *args, **kwargs)
- | Initialize self. See help(type(self)) for accurate signature.
- |
- | ----------------------------------------------------------------------
- | Methods inherited from OSError:
- |
- | __reduce__(self, /)
- | Helper for pickle.
- |
- | __str__(self, /)
- | Return str(self).
- |
- | ----------------------------------------------------------------------
- | Static methods inherited from OSError:
- |
- | __new__(*args, **kwargs) class method of builtins.OSError
- | Create and return a new object. See help(type) for accurate signature.
- |
- | ----------------------------------------------------------------------
- | Data descriptors inherited from OSError:
- |
- | characters_written
- |
- | errno
- | POSIX exception code
- |
- | filename
- | exception filename
- |
- | filename2
- | second exception filename
- |
- | strerror
- | exception strerror
- |
- | winerror
- | Win32 exception code
- |
- | ----------------------------------------------------------------------
- | Methods inherited from BaseException:
- |
- | __getattribute__(self, name, /)
- | Return getattr(self, name).
- |
- | __repr__(self, /)
- | Return repr(self).
- |
- | __setstate__(self, object, /)
- |
- | add_note(self, object, /)
- | Exception.add_note(note) --
- | add a note to the exception
- |
- | with_traceback(self, object, /)
- | Exception.with_traceback(tb) --
- | set self.__traceback__ to tb and return self.
- |
- | ----------------------------------------------------------------------
- | Data descriptors inherited from BaseException:
- |
- | __cause__
- | exception cause
- |
- | __context__
- | exception context
- |
- | __dict__
- |
- | __suppress_context__
- |
- | __traceback__
- |
- | args
复制代码
翻译:
- 模块内置程序中 BrokenPipeError 类的帮助:
- 类 BrokenPipeError(ConnectionError)
- | 管道破裂。
- |
- | 方法解析顺序:
- | BrokenPipeError
- | 连接错误
- | OSError
- | 异常
- | 基本异常
- | 对象
- |
- | 这里定义的方法:
- |
- | __init__(self, /, *args, **kwargs)
- | 初始化自身。 有关准确的签名,请参见 help(type(self)) 。
- |
- | ----------------------------------------------------------------------
- | 继承自 OSError 的方法:
- |
- | __reduce__(self, /)
- | 为 pickle 提供帮助。
- |
- | __str__(self, /)
- | 返回 str(self)。
- |
- | ----------------------------------------------------------------------
- | 继承自 OSError 的静态方法:
- |
- | buildins.OSError 的类方法 __new__(*args, **kwargs)
- | 创建并返回一个新对象。 请参见 help(type) 获取准确的签名。
- |
- | ----------------------------------------------------------------------
- | 从 OSError 继承的数据描述符:
- |
- | 字符写入
- |
- | Erno
- | POSIX 异常代码
- |
- | 文件名
- | 异常文件名
- |
- | 文件名2
- | 第二个异常文件名
- |
- | stringerror
- | 异常 strerror
- |
- | winerror
- | Win32 异常代码
- |
- | ----------------------------------------------------------------------
- | 继承自 BaseException 的方法:
- |
- | __getattribute__(self, name, /)
- | 返回 getattr(self,name)。
- |
- | __repr__(self, /)
- | 返回 repr(self)。
- |
- | __setstate__(self, object, /)
- |
- | add_note(self, object, /)
- | Exception.add_note(note) --
- | 为异常添加注释
- |
- | with_traceback(self, object, /)
- | Exception.with_traceback(tb) -- | 为异常添加注释。
- | 将 self.__traceback__ 设为 tb 并返回 self。
- |
- | ----------------------------------------------------------------------
- | 从 BaseException 继承的数据描述符:
- |
- | __cause__
- | 异常原因
- |
- | __context__
- | 异常上下文
- |
- | __dict__
- |
- | __suppress_context__
- |
- | __traceback__
- |
- | args
复制代码
不要以为是机翻错了, 他事实上就叫管道破裂.
在操作系统中,进程间通信经常使用管道。管道是一种单向通信机制,用于将一个进程的输出连接到另一个进程的输入。当管道的读取端关闭时,对于向其写入数据的进程而言,它是一个破损的管道。当一个进程向一个破损的管道写入数据时,操作系统会发送一个SIGPIPE信号给该进程,通知它管道已经破损。在Python中,这个SIGPIPE信号会被转化为BrokenPipeError异常。
当你的Python程序尝试将输出重定向到一个管道(通常是日志文件)时,就会发生“Broken Pipe”错误。管道就像一条虚拟的管道,允许数据从一个进程传输到另一个进程。如果这个管道断开,就会触发这个错误。
怎么说呢, 它的发生需要一定条件.主线程意外终止: 负责打印输出的主线程意外终止,子进程终止,日志文件不可写,管道缓冲区已满
使用try...except...可限制资源使用,以防止主线程意外终止。
示例:
- import logging
- # 设置日志记录
- logging.basicConfig(filename='mylog.log', level=logging.DEBUG)
- # 创建主线程
- def main_thread():
- try:
- # ... 程序代码 ...
- # 写入日志
- logging.info('主线程输出')
- except Exception as e:
- # 处理异常
- logging.error(e)
- # 启动主线程
- main_thread()
复制代码
通过使用“try”和“except”语句来处理异常,我们防止了主线程意外终止。此外,我们使用“logging”模块进行日志记录,而不是直接重定向到管道。
#不太常用,反正我没见过 |
|