ejo*_*ejo 6 python subprocess python-3.x
我有一个脚本a.py
,在执行它时会向用户询问某些查询并以json格式构造输出.使用python子进程,我可以从另一个名为的脚本调用此脚本b.py
.一切都按预期工作,除了我无法获得变量的输出?我在Python 3中这样做.
要使用subprocess
模块从另一个脚本中调用Python脚本并传递一些输入并获取其输出,请执行以下操作:
#!/usr/bin/env python3
import os
import sys
from 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)
Run Code Online (Sandbox Code Playgroud)
更为灵活的替代方法是导入模块a
并调用函数以获取结果(确保a.py
使用if __name__=="__main__"
警惕,以避免在导入时运行不良代码):
#!/usr/bin/env python
import a # the dir with a.py should be in sys.path
result = [a.search(query) for query in ['query 1', 'query 2']]
Run Code Online (Sandbox Code Playgroud)
您可以用来mutliprocessing
在单独的过程中运行每个查询(如果执行查询需要占用大量CPU,则可能会提高时间性能):
#!/usr/bin/env python
from multiprocessing import freeze_support, Pool
import a
if __name__ == "__main__":
freeze_support()
pool = Pool() # use all available CPUs
result = pool.map(a.search, ['query 1', 'query 2'])
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7711 次 |
最近记录: |