gpt4 book ai didi

python - 使用子进程在 python 脚本中调用带有输入的 python 脚本

转载 作者:太空狗 更新时间:2023-10-30 01:07:35 32 4
gpt4 key购买 nike

我有一个脚本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)

哪里get_script_dir() function is defined here .

一个更灵活的替代方案是导入模块 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']]

您可以使用 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'])

关于python - 使用子进程在 python 脚本中调用带有输入的 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30076185/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com