要使用
subprocess模块从另一个脚本中调用Python脚本并传递一些输入并获取其输出,请执行以下操作:
#!/usr/bin/env python3import osimport sysfrom subprocess import check_outputscript_path = os.path.join(get_script_dir(), 'a.py')output = check_output([sys.executable, script_path],input='n'.join(['query 1', 'query 2']),universal_newlines=True)
这里
get_script_dir()定义了功能。
更为灵活的替代方法是导入模块a并调用函数以获取结果(确保
a.py使用if name==”main“防护,以避免在导入时运行不良代码):
#!/usr/bin/env pythonimport a # the dir with a.py should be in sys.pathresult = [a.search(query) for query in ['query 1', 'query 2']]
你可以用来
mutliprocessing在单独的进程中运行每个查询(如果执行查询占用大量CPU,则可能会提高时间性能):
#!/usr/bin/env pythonfrom multiprocessing import freeze_support, Poolimport aif __name__ == "__main__": freeze_support() pool = Pool() # use all available CPUs result = pool.map(a.search, ['query 1', 'query 2'])



