使用子进程使用python脚本中的输入调用python脚本

使用子进程使用python脚本中的输入调用python脚本

我有剧本a.py在执行时,它将向用户询问某些查询,并以json格式对输出进行帧化。使用python子进程,我可以从另一个名为b.py..除了无法在变量中获得输出之外,一切都按预期工作?我是在Python 3中这样做的。



呼如林
浏览 434回答 2
2回答

海绵宝宝撒

从另一个脚本调用Python脚本subprocess模块,并传递给它一些输入并得到它的输出:#!/usr/bin/env python3import osimport sysfrom subprocess import check_output script_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'])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python