【问题标题】:How to keep variable in memory - PyCharm如何将变量保存在内存中 - PyCharm
【发布时间】:2020-08-09 06:15:31
【问题描述】:

在 PyCharm 中工作时,我经常运行代码。问题是整个代码操作临时存储在 excel 中的数据(一旦程序启动并运行,我们将把它移动到数据库中)。加载数据需要时间。

PyCharm 中是否有办法在程序完成运行后将变量保留在初始内存中(无需在控制台中运行一段代码)?

data = pd.read_excel(path, index_col=0)

我想避免每次运行程序时都重新加载数据。

【问题讨论】:

    标签: python pandas pycharm ide


    【解决方案1】:

    不,这个功能还没有实现,没有办法做到这一点。

    【讨论】:

    • 希望它不是“太有创意”,但我可以输入“再次运行”吗?程序末尾的问题,然后在加载数据之前启动代码?这还需要在程序中间导入我的类(我想要处理的代码)。
    【解决方案2】:

    如果不需要在 PyCharm 中工作,您可以在 jupyter notebook 中工作:https://jupyter.org/ 您可以将数据加载到一个单元格中并在下一个单元格中使用它。一旦执行,单元格的结果就会保存在内存中。

    【讨论】:

    • 我正在远程登录我的工作环境。一旦我加载了相当长的类,我发现 Jupyter 笔记本非常慢 - 我在编辑代码时有延迟,但 PyCharm 工作得非常好,但它需要不断重新加载数据。
    • 那么据我所知,你运气不好。
    • 谢谢。我真的希望他们能够实现这一点。这将改变我大部分工作的游戏规则。 90% 的运行时间是加载数据,在这种特殊情况下,这是一个很长的时间序列,我需要使用完整的数据集而不是样本。我会尝试寻找具有此功能的替代 IDE。
    • 不能分块加载数据吗?
    • 您建议修改输入或在 pd.read_excel 中使用 nrows ?不确定对速度有什么影响,很可能是从慢速共享驱动器访问数据是问题所在。
    【解决方案3】:

    我发现了一个肮脏的把戏 - 我知道这是一种非常非常非 Pythonic 且不合适的方法。但在这个例子中它对我有用。同样,这段代码只是暂时用于测试,一旦我对代码感到满意就会被删除。

    我运行的模块如下:

    data = pd.read_excel(path, index_col=0) #Data is loaded only once
    
    while True:
        reload(TestModule)
        TestModule.test_function(data)
        input("Press Enter to rerun the test")
    

    现在在 TestModule 中,我有 test_function,我可以在其中重新加载我正在处理的 ModyfiedModule 以及我想要测试的任何函数。

    测试模块:

    def test_function(data):
        from ModyfiedModule import MyClass
    
        #Run bunch of tests from MyClass
        #Code to test MyClass is here
    

    在这种情况下,我只加载一次数据,我可以修改 MyClass 模块并执行 TestModule 中定义的各种测试,而无需每次都重新加载数据。

    修改代码后我唯一需要做的就是保存 MyClass 和 TestModule 并在控制台中按 Enter 重新运行测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-10
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      相关资源
      最近更新 更多