【发布时间】:2020-08-09 06:15:31
【问题描述】:
在 PyCharm 中工作时,我经常运行代码。问题是整个代码操作临时存储在 excel 中的数据(一旦程序启动并运行,我们将把它移动到数据库中)。加载数据需要时间。
PyCharm 中是否有办法在程序完成运行后将变量保留在初始内存中(无需在控制台中运行一段代码)?
data = pd.read_excel(path, index_col=0)
我想避免每次运行程序时都重新加载数据。
【问题讨论】:
在 PyCharm 中工作时,我经常运行代码。问题是整个代码操作临时存储在 excel 中的数据(一旦程序启动并运行,我们将把它移动到数据库中)。加载数据需要时间。
PyCharm 中是否有办法在程序完成运行后将变量保留在初始内存中(无需在控制台中运行一段代码)?
data = pd.read_excel(path, index_col=0)
我想避免每次运行程序时都重新加载数据。
【问题讨论】:
不,这个功能还没有实现,没有办法做到这一点。
【讨论】:
如果不需要在 PyCharm 中工作,您可以在 jupyter notebook 中工作:https://jupyter.org/ 您可以将数据加载到一个单元格中并在下一个单元格中使用它。一旦执行,单元格的结果就会保存在内存中。
【讨论】:
我发现了一个肮脏的把戏 - 我知道这是一种非常非常非 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 重新运行测试。
【讨论】: