有一种简单的方法可以在扩展的python脚本中使用"检查点"吗?

Pet*_*lan 7 python architecture

为了解释我的问题,让我给出一些上下文:我正在研究一个有许多不同步骤的数据管道.每一步都可能出错,很多都需要一些时间(不是很大,但是大约几分钟).

出于这个原因,管道目前受到人类的严格监督.分析师完成每个步骤,在Jupyter笔记本中运行python代码,遇到问题时,会对内联进行少量代码调整并重复该部分.

从长远来看,这里的目标是零人为干预.但是,从短期来看,我们希望这个过程更加无缝.最简单的方法似乎是将每个部分拆分成自己的脚本,并拥有一个运行每个位并验证输出的父脚本.但是,如果文件失败,我们还需要能够使用相同的设置重新运行该文件.

例如:

run a --> ?
run b --> ? (b relies on some data produced by a)
run c --> ? (c relies on data produced by a and b)
// make some changes to c
run c --> ? (c should run in an identical state to its original run)
Run Code Online (Sandbox Code Playgroud)

最明显的方法是将每个脚本的输出写入文件,并将所有这些脚本加载到下一个脚本中.这可行,但似乎有点不雅.数据库似乎是另一个有效的选项,但很多数据并不完全适合db格式.

有没有人对某些方法有任何建议,以实现我正在寻找的东西?如果有什么不清楚的话,我也非常乐意澄清任何一点!

Eri*_*ang 8

您可以创建一个在每个步骤之后基本维护状态的对象,并使用pickle将该对象序列化为文件.

然后由你的python脚本来解开该文件,然后根据状态决定它需要从哪个步骤开始.

https://wiki.python.org/moin/UsingPickle