从bash脚本运行多个Python脚本时,将Python脚本加载到内存中

我有一个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,uses class variable some_var

我的流程如下:

  1. 我在script3.py中编辑源代码,在其中更改类变量some_var
  2. 我运行bash脚本。 (请注意,脚本首先运行python setup.py install
  3. 我在script3.py中编辑源代码,在其中更改相同的类变量。
  4. 我运行bash脚本。 (请注意,脚本首先运行python setup.py install,还请注意,该脚本是train()方法返回之前启动的
  5. 重复几次。

我希望发生的事情:

我希望当我运行bash脚本时,bash脚本和Python脚本会加载到内存中,然后根据需要执行。具体来说:

  • train()中的script3.py方法以值some_var运行,然后返回,script1.py也返回
  • test()中的script3.py方法以相同的some_var值运行,然后返回,script2.py也返回

实际发生的情况:

假设我在几分钟内运行了3次bash脚本。由于train()方法需要几个小时才能执行,因此当执行到达test()方法时,类变量some_var会更改为源代码的最后编辑,因此所有这3个在第三次运行bash脚本之前,运行将使用相同的some_var值,特别是在上一次编辑中设置的值。

快速修复:

一个快速解决方案是将script3.py编辑为如下所示:

class MyClass():

    some_var = 'value1' # Enum value

    def __init__(self):
        print('Initialized this bad boy')

    def train(self,param2):
        self.some_var = 'value1'
        # some code goes here,uses class variable some_var

但是,这将导致代码质量低下并且不切实际,因为现在我必须在每次运行bash脚本之前的3个地方更改some_var这是行不通的。行为相同,始终使用上次编辑的值。

问题:

有什么更好的方法来实现这一目标?
我认为必须在整个bash脚本执行期间将Python脚本加载到内存中。

限制(由于这是一个更大的项目的一部分):

  • 我无法在train()test()的{​​{1}}的{​​{1}}或script3.py方法中传递额外的参数。
  • 我无法将命令行参数传递给script1.py
wanderer0 回答:从bash脚本运行多个Python脚本时,将Python脚本加载到内存中

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3148265.html

大家都在问