如果我在运行时修改Python脚本,将会发生什么?


219

想象一下,一个需要花费很长时间才能运行的python脚本,如果我在运行时对其进行修改,会发生什么?结果会有所不同吗?


8
该程序被加载到您的主存储器中。如果更改源文件,则不会发生任何事情。想象一下CPU将读取硬盘驱动器中的指令...
Felix Kling

15
@Felix:称为“就地执行”(XIP)。
伊格纳西奥·巴斯克斯

@Ignacio:有趣,我不知道。谢谢:)
费利克斯·克林

3
您可以动态加载模块的代码,看到stackoverflow.com/questions/437589/...
Iliyan Bobev

2
请注意,Windows批处理文件确实会在适当位置执行,因此这不是一个假设的问题,因为有一些语言会以这种方式运行。
溜溜球

Answers:


259

没什么,因为Python将您的脚本预编译为PYC文件并启动它。

但是,如果发生某种异常,您可能会得到一个有点误导的解释,因为第X行的代码可能与启动脚本之前的代码不同。


10
不一定要成文件。
伊格纳西奥·巴斯克斯

60
但是,如果您在运行时重新启动,而新的pyc文件覆盖了旧的pyc文件,会在已经在运行或未运行的程序中引起问题吗?
2012年

26
没发生什么事。我还在一个小测试中对其进行了检查。会发生什么:pyc只是编译。然后将此编译文件加载到RAM中,然后执行。因此,始终可以更改程序,重新编译并运行另一个实例,例如在其他控制台中。
克里斯

7
@Chris我在一个控制台中启动了我的python脚本实例。在运行时,我更改了两行代码,并在单独的控制台中启动了另一个实例。一段时间后,我从第一个控制台返回了一个关于我在启动后更改的两行代码的错误!请帮助
double_j 2015年

14
@克里斯,我想我知道这里会发生什么。如果修改脚本并在运行时保存脚本,并保存其版本错误,则在回溯读出中将打开文件的当前版本,并使回溯看起来与启动时有所不同。我本人几次见过这个。
double_j
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.