我正在使用PyCharm Pro 2018,最近才从Spyder切换到它。
我的脚本的第一部分涉及加载大量数据,大约需要1-2分钟。在脚本完成或出错时,我会得到一个python控制台,其中包含我可以调查的所有当前变量。
现在,如果我想更改方法/功能并在没有完全重新启动脚本的情况下再次运行它,该怎么办?
这里有一些伪代码:
class FetchData():
...
class ParseData():
...
def subroutine1(self, ...):
...
data = FetchData(...) # takes a long time
parser = ParseData(data,...)
parser.subroutine1(...)
运行此代码并在subroutine1中遇到错误后,我得到一个控制台,可以查看“数据”和“解析器”(以及其他任何变量)。是否可以修改subroutine1并在控制台“ parser.subroutine1(...)”中手动重新运行该方法,但更改后的方法和“ data”仍保持不变?
如果不是这样,或者通常来说,在不需不断重新加载“ data = FetchData(...)”的情况下对subroutine1进行编码的最佳实践是什么?
非常感谢!
答案 0 :(得分:0)
我有两种解决方法:
1。)使用Jupyter笔记本。笔记本电脑最大的功能/优势之一就是这种功能。相互封装代码的各个部分,如果以后的代码单元/块中出现错误,则不会使您从头开始。
2。)腌制您的数据结果,并引用它。 Python的内置pickle模块具有创建“棘手”文件的能力,该文件可以保存您在长时间运行的子例程中创建的几乎所有数据。因此,将您的代码分成2个文件,长时间运行/创建数据的文件只会创建数据并将其腌制;仅在需要更新pickle文件中的数据时才运行它。您要在数据上运行的第二个/后续例程在一个python文件中,该文件打开/读取pickle文件(这是非常快的动作),然后对其中的先前存储的数据进行处理。
答案 1 :(得分:0)
接近你所要求的:
subroutine1
subroutine1
,然后完全突出显示它(从 def subroutine1(self, ...):
到最后一行)subroutine1
的行,这将根据您更新的子例程1 等为您提供结果