前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Exception [WinError 995] 由于线程退出或应用程序请求 的解决办法

Exception [WinError 995] 由于线程退出或应用程序请求 的解决办法

作者头像
Alan Lee
发布2021-12-07 15:48:30
1.4K0
发布2021-12-07 15:48:30
举报
文章被收录于专栏:Small Code

问题

Windows 10 系统下,IPython 解释器内执行某些程序,会导致出现类似如下报错:

代码语言:javascript
复制
Unhandled exception in event loop:
  File "C:\Users\secsilm\Anaconda3\lib\asyncio\proactor_events.py", line 768, in _loop_self_reading
    f.result()  # may raise
  File "C:\Users\secsilm\Anaconda3\lib\asyncio\windows_events.py", line 808, in _poll
    value = callback(transferred, key, ov)
  File "C:\Users\secsilm\Anaconda3\lib\asyncio\windows_events.py", line 457, in finish_recv
    raise ConnectionResetError(*exc.args)

Exception [WinError 995] 由于线程退出或应用程序请求,已中止 I/O 操作。
Press ENTER to continue...

复现

Jonathan Slenders 在 issue39010 中提供了一段最小复现代码:

代码语言:javascript
复制
from prompt_toolkit import prompt
while 1:
    prompt('>')

然后一直按着 Enter 不放,一会儿就会出现报错了。

原因

根据 IPython 核心开发者 Matthias Bussonnier 在 GitHub 上的回复,大致原因是由于 IPython 所依赖的 prompt_toolkit 刚好在 IPython 7.10 发布之前升级到了 3.x 版本,该版本对 concurrent 进行了优化。但 IPython 还没来得及兼容适配,有一些情况没有被覆盖到。所以将 prompt_toolkit 降到 2.x 应该就好了。

而且,IPython 主要是由他维护的,然而这位核心开发者没有 Windows 机器。。。

解决

对于 Python 3.8 来说,可以直接升级 prompt_toolkit 到最新版本(应该 >= 3.0.18)来解决这个问题:

代码语言:javascript
复制
pip install -U prompt_toolkit

或者降级到 2.x

代码语言:javascript
复制
pip install prompt-toolkit==2.0.10

如果还是不行,则要修改 asyncioproactor_events.py 大约第 769 行处,函数 _loop_self_reading(),在 f.result() 下面增加代码:

代码语言:javascript
复制
def _loop_self_reading(self, f=None):
    try:
        if f is not None:
            f.result()  # may raise
        # 增加的代码:START
        if self._self_reading_future is not f:
            return
        # 增加的代码:END
        f = self._proactor.recv(self._ssock, 4096)
        # 其他代码

而对于 Python 3.9 来说,这个问题应该已经被修复了。

Reference

END

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 复现
  • 原因
  • 解决
  • Reference
  • END
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档