Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在大型项目上快速修改python代码?如何在多模块python项目中运行代码段_Python_Python 3.x_Pandas_Spyder - Fatal编程技术网

如何在大型项目上快速修改python代码?如何在多模块python项目中运行代码段

如何在大型项目上快速修改python代码?如何在多模块python项目中运行代码段,python,python-3.x,pandas,spyder,Python,Python 3.x,Pandas,Spyder,我正在做一个数据分析项目,有一个大数据集。以前我一直使用Run Segment(F9)来运行我的所有代码,这使得快速尝试不同的东西和快速调试变得很容易 项目变得越来越大,因此我将函数和代码部分分离为不同的模块,从main.py调用这些模块,以便在分析不同的疾病时重用函数,并对不同的疾病执行相同的分析 开发人员如何高效地解决大型项目的故障?例如,以前如果我过滤了一个pandas数据帧,得到了与预期不同的结果,我只需更改过滤条件并重新运行这一行代码。现在,当我只更改一行代码时,我必须完全重新加载数据

我正在做一个数据分析项目,有一个大数据集。以前我一直使用Run Segment(F9)来运行我的所有代码,这使得快速尝试不同的东西和快速调试变得很容易

项目变得越来越大,因此我将函数和代码部分分离为不同的模块,从main.py调用这些模块,以便在分析不同的疾病时重用函数,并对不同的疾病执行相同的分析

开发人员如何高效地解决大型项目的故障?例如,以前如果我过滤了一个pandas数据帧,得到了与预期不同的结果,我只需更改过滤条件并重新运行这一行代码。现在,当我只更改一行代码时,我必须完全重新加载数据并执行所有先前的修改。 如果我要更改第二级模块中的一个函数,如helper函数,我必须重新启动内核,以使对模块的更改生效,这需要更长的时间

有哪些开发技术可以让我在不必重复重新加载/重新处理数据集的情况下有效地探索数据并调试代码? Python似乎使重新加载模块变得非常困难。高效开发多模块代码的预期方法是什么


谢谢。

重新加载模块几乎不是解决办法。(有些人不同意,但那些人拒绝接触任何不是SMALLATE的语言。)你想设计所有的测试,在一个全新的、干净的会话中运行,而不是在一个长的交互式会话的中间。这迫使您在组件之间提供干净的接口。并组织您的数据,以便您在每个中间阶段都可以理解并保存到文件并进行恢复。所有这些东西都有额外的好处,再加上任何像样的单元测试库,它们都是您真正需要的。不管怎么说,一旦您让这些东西工作起来,通常不保存和加载所有东西会更快,而只是以交互方式将它们连接起来,这很好。只要能够执行干净的测试,并保存和恢复状态,就不必每次都以这种方式运行它们。如果您已经在变量中保存了
func1
的输出
数据
,并将其还原为传递给
func2
,并且如果您可以在自己的一次性模块中写入替换
func2
,则无需重新加载任何内容;只需导入该一次性方式,并使用您的
数据调用其
func2
@abarnert谢谢。您能详细介绍一下如何以交互方式连接模块吗?即使保存中间数据集,也需要1.46分钟才能重新加载到内存中。这台机器有256gb的内存,所以我宁愿把它保存在内存中。如果我理解正确,您是说我应该以交互方式加载
func1
中的数据,然后调用
func2
?我已经试过了,问题是
func2
main.py
在一个单独的模块中。另外,如果您将注释移动到某个答案,则我可以接受该答案。@abarnert我是否应该只将已调试的代码移动到其他模块,以便在不重新启动的情况下快速排除代码故障以重新加载所有内容?