运行 一个 python 脚本和更改 git 分支

Running a python script and changing git branch

我正在努力寻找更好地利用编程时间的方法。

我有一个 python 脚本可以完成一些繁重的工作(可能需要几个小时)。现在,它所做的大部分工作都与网络相关,所以我有很多 cpu 资源可以使用。

如果脚本是 C 二进制可执行文件,可以 git 检出到不同的分支并做额外的工作,我什至可以修改磁盘中的二进制文件,因为它已被复制到 ram,所以直到它完成 运行 我不会影响程序输出。

但是 python 脚本是翻译的,不是编译的。如果我开始篡改源文件会发生什么,我是否可以破坏程序输出,或者文本文件和相关导入是否复制到 RAM,允许我篡改源而不会有改变 [=25= 的行为的风险] 程序?

当一个 python 程序是 运行 它是 compiled (有点,更像是翻译)到一个 .pyc 文件然后 运行 由 python 解释器。当您更改文件时,如果它已经 运行ning,则不应影响代码。

这是一个相关的 Whosebug 答案。 What will happen if I modify a Python script while it's running?

为什么不在另一个工作目录中进行修改?是否有很多辅助数据或其他东西使设置工作目录变得困难? IE。如果您的工作目录是 Agit clone A B,然后在 B 中工作。完成后,您可以将更改从 B 拉回到 A

git remote add B ../B
git pull B master

一般来说,如果您有一个 Python 文件并将其 运行 作为脚本,就可以了。当你 运行 文件时,它被编译成字节码然后被执行。此时您可以更改原始脚本,不会出现任何问题。

但是,我们可以故意通过编写一些可怕但合法的代码来打破它:

horrible.py:

from time import sleep


sleep(10)
import silly
silly.thing()

silly.py:

def thing():
    print("Wow!")

您可以 运行 horrible.py 并且在 运行ning 期间您可以编辑磁盘上的 silly.py 以使其执行其他操作。当 silly.py 最终 imported 时,将加载更新版本。

一种解决方法是将所有导入放在文件的顶部,无论如何您都可能这样做。