为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

呼如林 2019-07-12 15:21:30
使用子进程使用python脚本中的输入调用python脚本我有剧本a.py在执行时,它将向用户询问某些查询,并以json格式对输出进行帧化。使用python子进程,我可以从另一个名为b.py..除了无法在变量中获得输出之外,一切都按预期工作?我是在Python 3中这样做的。
查看完整描述

2 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

从另一个脚本调用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'])


查看完整回答
反对 回复 2019-07-12
  • 2 回答
  • 0 关注
  • 418 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信