繁体   English   中英

运行python脚本并更改git分支

[英]Running a python script and changing git branch

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

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

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

但python脚本是翻译的,而不是编译的。 如果我开始篡改源文件会发生什么,我可以破坏程序输出,还是将文本文件和相关的导入文件复制到RAM中,这样我就可以篡改源代码而不会有改变正在运行的程序行为的风险?

一般来说,如果您有一个Python文件作为脚本运行,那么你没问题。 当您运行该文件时,它将被编译为字节码,然后执行该字节码。 您可以在此时更改原始脚本,并且不会中断。

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

horrible.py

from time import sleep


sleep(10)
import silly
silly.thing()

silly.py

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

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

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

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

这是一个相关的stackoverflow答案。 如果我在运行时修改Python脚本会发生什么?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM