我有一个脚本,它解析一些参数,并且有一些昂贵的导入,但是只有当用户提供有效的输入参数时才需要这些导入,否则程序退出。而且,当用户说python script.py --help
时,根本不需要执行那些昂贵的导入。你知道吗
我能想到这样一个剧本:
import argparse
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('--argument', type=str)
args = parser.parse_args()
return args
if __name__ == "__main__":
args = parse_args()
import gensim # expensive import
import blahblahblah
def the_rest_of_the_code(args):
pass
if __name__ == "__main__":
the_rest_of_the_code(args)
这很管用,但在我看来并不优雅。对这项任务有什么更好的建议吗?你知道吗
编辑:导入非常昂贵:
$ time python -c "import gensim"
Using TensorFlow backend.
real 0m12.257s
user 0m10.756s
sys 0m0.348s
不确定它是否比您已有的更好,但您可以懒洋洋地加载它:
如果您只想确保参数有意义,可以使用一个包装器
main
模块来检查参数,然后加载另一个模块并调用它。你知道吗你知道吗主.py地址:
你知道吗我的模块.py地址:
您可以有条件地导入,或者在
try
块中导入,或者几乎在代码中的任何地方导入。你知道吗所以你可以这样做:
或者更清楚地说,只在将使用lib的函数中导入lib。你知道吗
相关问题 更多 >
编程相关推荐