我正在尝试使用bash脚本同时运行多个python脚本,并通过传入args来修改bash脚本(称为MasterLoader)中的python变量(如amount或min / max):
A_Num=20
python A1.py "global AMOUNT; AMOUNT = $A_Num" &&
python A2.py &&
#More follows
$SHELL
在A1中我有一个功能:
def take_args():
for i in range(len(sys.argv)-1):
exec(sys.argv[i+1])
现在,这很好用。我的问题来自于我为每个文件实现了托管所有功能的模块(每个模块有大约250行或更多的冗余代码),如下所示:
def take_args():
for i in range(len(sys.argv)-1):
exec(sys.argv[i+1])
def common_function1():
#Code here
#More functions follow
我调用了这个模块函数,现在在A1(其中任何一个真的)我只是这样做:
from functions import *
def main()
#<Variables here>
take_args()
然而,这不再有效,因为A1中的变量未被更改。我的想法是现在它在函数中运行take_args()并且正在改变那个全局AMOUNT?由于公共函数重构我有一个函数而没有全局变量,所以我想在不使用我目前可以实现的任何解决方案的情况下这样做:
复制def take_args():跨越每个函数并创建所有可能的变量我想调整全局
必须修改我传递的MasterLoader的args和A1.py以将相关变量传递给函数
如果可能的话,我希望解决方案只需更改MasterLoader的args,就像我之前一样。解决方案2对我不起作用,因为我有大约60个脚本,如果我想改变新变量,我必须重构,解决方案1从编程角度来看很笨重(重复代码,全局变量)