电源循环时Python pyc可能吗?

时间:2013-06-10 16:25:57

标签: python pyc

想知道python是否能够在给定py的编译阶段内对pyc进行检查,以防止由于系统(和磁盘)的突然断电而导致的损坏的pyc。 当系统恢复时,将检查可能存在的pyc的完整性 如果它被认为是可疑的,重新生成?

2 个答案:

答案 0 :(得分:0)

据我所知,编译到字节码的过程在处理重新编译的过程中与普通make的工作方式相同;它检查编译的文件是否比源文件旧,如果它们是重新编译,如果它们不是,它将离开它们。我最好的建议是只要在怀疑突然断电时清除PYC文件并进行导入以获得新的文件(你也可以将其自动化,以使其更简单)。

请注意,在写入磁盘之前,我还没有尝试查看Python是否等待字节码文件完成;如果确实如此,这将减少你所谈论的那种腐败的可能性,因为如果在实际编译期间发生电源故障,PYC文件就不会被写入磁盘。但是,如果在写入期间发生断电,则损坏仍然是一个问题,因为我相信大多数操作系统在使用写访问权限而不是文件句柄关闭时更新文件的修改时间。

答案 1 :(得分:0)

如果我正确解释this message,Python 3.3将以不同的名称创建.pyc文件,并在成功完成后重命名。我认为这就像它在这种背景下的“原子”(它们的术语)一样,它肯定会保护你免受突然崩溃或失去动力。早期版本(包括2. *分支)显然仍然受到竞争条件和无效.pyc文件的影响。

但是,如果文件在没有触发运行时异常的情况下无效,则这是一个单独的问题。问题报告所有关于导入失败的讨论。