【问题标题】:How do I turn off the "Evaluating: plt.show() did not finish after 3.00s seconds." warning in the VsCode debugger?如何关闭“评估:plt.show() 在 3.00 秒后未完成”。 VsCode 调试器中的警告?
【发布时间】:2021-03-13 13:46:51
【问题描述】:

我经常通过在 vscode 调试器中绘制 NumPy 数组来调试我的 python 代码。 我经常花 3 秒以上的时间看一个情节。当我做 vscode 打印非常 下面的长警告。这很烦人,因为我必须向上滚动很多 一直在查看以前的调试输出。这个 PYDEVD_WARN_EVALUATION_TIMEOUT 在哪里 多变的?如何关闭此功能?

为了完整起见,我在下面添加了警告,非常感谢您的帮助!

评估:plt.show() 未在 3.00 秒后完成。 这可能意味着很多事情:

  • 这个评估真的很慢,这是意料之中的。 在这种情况下,可以通过提高超时来消除此错误,设置 PYDEVD_WARN_EVALUATION_TIMEOUT 环境变量设置为更大的值。

  • 评估可能需要在运行时运行其他线程: 在这种情况下,可以设置 PYDEVD_UNBLOCK_THREADS_TIMEOUT 环境变量,以便如果在给定超时后评估未完成, 其他线程被解除阻塞,或者您可以手动恢复所有线程。

    另外,也可以通过设置 pydev_do_not_trace = True 相关 threading.Thread 实例中的属性 (如果某个线程应该始终在运行,并且预计不会在其中遇到断点)。

  • 评估陷入僵局: 在这种情况下,您可以设置 PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT 环境变量为 true 以便线程转储与此消息一起显示,并且 可选地,将 PYDEVD_INTERRUPT_THREAD_TIMEOUT 设置为某个值,以便调试器 发生这种情况时会尝试中断评估(如果可能)。

【问题讨论】:

    标签: python visual-studio-code vscode-debugger


    【解决方案1】:

    如果找到一种方法来适应解决这个问题的 launch.json。

    {
        "version": "0.2.0",
        "configurations": [
    
            {
                "name": "Python: Current File",
                "type": "python",
                "request": "launch",
                "program": "${file}",
                "env": {"DISPLAY":":1",
                        "PYTHONPATH": "${workspaceRoot}",
                        "PYDEVD_WARN_EVALUATION_TIMEOUT": "500"},
                "cwd": "${workspaceFolder}",
                "console": "integratedTerminal"
            }
        ]
    }
    

    【讨论】:

      【解决方案2】:

      如果你热衷于隐藏警告,你会这样:

      在本文档的第 28.6.3 点中,您可以这样做: https://docs.python.org/2/library/warnings.html#temporarily-suppressing-warnings

      如果链接将来失效,这里是代码。

      import warnings
      
      def fxn():
          warnings.warn("deprecated", DeprecationWarning)
      
      with warnings.catch_warnings():
          warnings.simplefilter("ignore")
          fxn()
      

      您应该准备好使用简单的复制粘贴。

      【讨论】:

      • 嗨,AEM,感谢您的快速回复;-)!我已经找到了这个并且在我的主目录中使用了一个简单的“import warnings;warnings.filterwarnings("ignore")”,但它并没有消除调试器中的警告。
      猜你喜欢
      • 1970-01-01
      • 2011-11-13
      • 2011-06-15
      • 1970-01-01
      • 2019-02-06
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多