gpt4 book ai didi

python - 对内存中的 "transaction"使用 pickle 吗?

转载 作者:行者123 更新时间:2023-12-01 06:12:32 24 4
gpt4 key购买 nike

用户可以执行一个操作,这可能会触发相关操作(这些操作本身可能具有相关操作),并且如果用户取消相关操作,我希望能够取消整个操作。

我所看到的典型方式是撤消堆栈的某种变体,每个操作都需要知道如何撤消自身,然后如果子操作被取消,则撤消会级联向上。有时编写撤消方法很棘手,并且上下文中并不总是有足够的信息来正确了解如何以隔离的方式撤消操作。

我只是想到了一种(可能)更简单的方法,就是pickle程序(相关部分)的状态,然后取消就会恢复到以前的状态,而不需要为每个操作创建单独的撤消逻辑。

有人试过这个吗?有什么需要注意的问题吗?有什么理由不这样做?

编辑:依赖操作必须在父操作之后发生(甚至是否存在依赖操作也可能取决于父操作的结果),因此在执行任何操作之前仅检查所有依赖项并不是一种选择。我猜你可能会说一个 Action 会触发其他 Action ,但如果其中一个触发的 Action 无法执行,那么这一切都不会发生。

最佳答案

嗯,正如您提到的,数据设计是松散耦合的,所以如果它在内存中,我认为您不需要对其进行pickle。只需复制所有相关变量,transaction.abort() 就会将它们复制回来,transaction.commit() 就会删除数据。

存在一些问题,但使用 pickle 解决方案时不会遇到任何问题。

关于python - 对内存中的 "transaction"使用 pickle 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4986467/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com