【问题标题】:Re-run code from certain point onwards in PyCharm在 PyCharm 中从某个时间点开始重新运行代码
【发布时间】:2020-01-26 11:24:42
【问题描述】:

我在 PyCharm 中运行了相当耗时的 python 代码,最初加载数据,然后创建模型等。

我想知道是否可以在代码中将保存环境状态的特定点设置断点。从那里开始,我想对其余代码进行编辑,但最好从我设置的断点重新运行。

通过这样做,我可以避免数据加载和模型训练,这将是一个重复的过程。

这在 Python 中是可能的还是在 PyCharm 中有这样的功能? 谢谢

【问题讨论】:

  • 一种方法是通过数据序列化 - 反序列化。您执行一次“稳定”部分并将其序列化。然后你运行另一个脚本反序列化它并执行“不稳定”部分。这可以节省您的时间(我会推荐pickle 用于序列化库)。

标签: python debugging pycharm


【解决方案1】:

AFAIK 根据this question form 2014,PyCharm 在调试模式下不支持热交换代码。当您设置断点并对代码进行一些更改时,它们将不会被应用。

但是,您可以在调试控制台中设置 Python 属性,该属性可以在当前代码执行时访问您的所有变量。您可以修改它们的值并检查代码失败的原因。为此,只需单击此图标

【讨论】:

  • 问题不在于热交换代码,而在于在给定点重新启动代码。您在这里描述的只是标准调试过程。他们仍然必须将代码运行到给定点才能到达那里,因此不会节省任何时间。
【解决方案2】:

是的,您可以使用 pycharm 调试器在断点处检查 python 代码

如何使用请参考这里how to use a debugger in pycharm

您不能在两者之间使用代码修改代码,然后使用调试器从该断点开始。

小技巧要做到这一点,需要在调试器模式下运行python代码,即python -i main.py,还需要确保以前的代码与新修改的代码没有相互依赖关系。

【讨论】:

    【解决方案3】:

    我发现的一个选项是将您的代码转换为 ipython 笔记本。将所有重量级/一次性运行代码放在前几个单元格中,将不稳定/待调试代码放在后面的单元格中。

    现在,您只运行前几个单元格,因此这些单元格的输出被存储起来,并且随时可供后面的单元格使用。每当您更改后面的单元格中的代码时,您只需运行这些单元格(除非您修改了早期单元格中的某些内容,在这种情况下您还需要重新运行这些单元格)。

    Pycharm/大多数 python IDE 支持运行和调试 ipython notebook 单元(单独或成组)。

    【讨论】:

      猜你喜欢
      • 2016-02-03
      • 2016-12-24
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多