我的bash脚本如下所示:
#!/bin/bash
{
var1='stuff'
var2='more stuff'
cd path/to/package &&
python setup.py install &&
printf "Ok, we're gonna run this bad boy" &&
(
printf "Training" &&
python -u script1.py "${var1}" "${var2}" &&
printf "Testing" &&
python -u script2.py "${var1}"
) 2>&1 | tee log.txt
exit
}
bash脚本运行script1.py
,完成后运行script2.py
。你知道吗
设置:
script1.py
通过其他Python脚本中定义的某些方法读取一些数据,然后创建在script3.py
中定义的类的实例,并调用该类中的train()
方法。这种train()
方法运行数小时。当这个train()
方法返回时,script1.py
也返回。你知道吗
script2.py
通过其他Python脚本中定义的某些方法读取一些数据,然后创建在script3.py
中定义的类的实例,并调用该类中的test()
方法。这种test()
方法运行数小时。当这个test()
方法返回时,script2.py
也返回。你知道吗
script3.py
和执行数据读取的Python脚本是Python包的一部分。你知道吗
script3.py
看起来像这样:
class MyClass():
some_var = '' # Enum value
def __init__(self):
print('Initialized this bad boy')
def train(self, param1, param2):
# some code goes here, uses class variable some_var
def test(self, param1, param2):
# some code goes here, uses class variable some_var
我的流程如下:
script3.py
中编辑源代码,在这里我更改了类变量some_var
。你知道吗python setup.py install
)script3.py
中编辑源代码,在那里我更改了相同的类变量。你知道吗python setup.py install
,还请注意,这是在train()
方法返回之前启动的)我期望发生什么:
我希望在运行bash脚本时,bash脚本和Python脚本被加载到内存中,然后根据需要执行。具体来说:
script3.py
的train()
方法以值some_var
运行,然后返回script1.py
script3.py
的test()
方法使用相同的some_var
值运行,然后返回script2.py
实际情况:
假设我在几分钟内运行bash脚本3次。由于train()
方法需要几个小时才能执行,当执行到达test()
方法时,类变量some_var
被更改为源代码的最后一次编辑,因此所有3次运行都使用相同的some_var
值,特别是在第三次运行bash脚本之前在最后一次编辑中设置的值。你知道吗
快速解决方法:
一个快速解决方法是将script3.py
编辑成这样:
class MyClass():
some_var = 'value1' # Enum value
def __init__(self):
print('Initialized this bad boy')
def train(self, param1, param2):
self.some_var = 'value1'
# some code goes here, uses class variable some_var
def test(self, param1, param2):
self.some_var = 'value1'
# some code goes here, uses class variable some_var
然而,这将是糟糕的代码质量,也不切实际,因为现在我必须在每次运行bash脚本之前更改3处仔细想想,这是行不通的。它的行为相同,总是使用上次编辑的值。你知道吗some_var
。
问题:
实现这一目标的更好方法是什么?
我认为在bash脚本的整个执行过程中,必须有一种方法将Python脚本加载到内存中。你知道吗
限制(由于这是一个更大项目的一部分):
script1.py
或script2.py
传递script3.py
的train()
或test()
方法中的额外参数。你知道吗script3.py
。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐