我正在尝试寻找方法,以便在编程时更好地利用自己的时间。
我有一个python脚本,需要完成一些繁重的工作(可能需要数小时)。现在,它所做的大部分工作都与网络相关,因此我有大量的CPU资源可供使用。
如果脚本是C二进制可执行文件,可以将git checkout到另一个分支上并做额外的工作,因为我什至可以修改磁盘中的二进制文件,因为它已复制到ram,所以直到它完成运行为止不会影响程序输出。
但是python脚本是翻译的,而不是编译的。如果我开始篡改源文件,是否可以破坏程序输出,或者文本文件和相关的导入文件已复制到RAM,这使我可以篡改源文件而没有改变正在运行的程序行为的风险,会发生什么? / p>
答案 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)
为什么没有另一个可以在其中进行修改的工作目录?是否有大量辅助数据或某些东西使得设置工作目录变得困难?即如果您的工作目录是A
,git clone A B
,然后在B
中工作。完成后,您可以将更改从B
拉回到A
:
git remote add B ../B
git pull B master