运行python脚本并更改git分支

时间:2018-12-05 17:06:40

标签: python git branch git-branch

我正在尝试寻找方法,以便在编程时更好地利用自己的时间。

我有一个python脚本,需要完成一些繁重的工作(可能需要数小时)。现在,它所做的大部分工作都与网络相关,因此我有大量的CPU资源可供使用。

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

但是python脚本是翻译的,而不是编译的。如果我开始篡改源文件,是否可以破坏程序输出,或者文本文件和相关的导入文件已复制到RAM,这使我可以篡改源文件而没有改变正在运行的程序行为的风险,会发生什么? / p>

3 个答案:

答案 0 :(得分:5)

通常,如果只有一个Python文件作为脚本运行,则可以。运行文件时,它会编译为字节码,然后执行。此时,您可以更改原始脚本,并且不会中断任何操作。

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

horrible.py

from time import sleep


sleep(10)
import silly
silly.thing()

silly.py

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

您可以运行horrible.py,而在运行时,您可以在磁盘上编辑silly.py使其执行其他操作。最终silly.py完成import时,将加载更新的版本。

一种解决方法是将所有导入内容放在文件顶部,您仍然可以这样做。

答案 1 :(得分:2)

运行python程序时,它将compiled(有点像翻译后的语言)转换成.pyc文件,然后由python解释器运行。更改文件时,如果文件已经在运行,则不应影响代码。

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

答案 2 :(得分:2)

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

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