使用子进程通过用户输入执行 Python 脚本
从另一个脚本 (b.py) 执行 Python 脚本 (a.py) 时通过子进程,捕获脚本的输出可能是一个挑战。本文提供了检索所需输出的替代方法。
方法 1:使用 Subprocess 传递输入并捕获输出
<code class="python">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)</code>
方法 2:导入模块和调用函数
更灵活的方法是导入目标模块(a)并调用其中的特定函数。确保 a.py 使用 if __name__ == "__main__" 保护来防止在导入时执行不需要的代码。
<code class="python">import a result = [a.search(query) for query in ['query 1', 'query 2']]</code>
方法 3:并行查询执行的多重处理
如果查询执行是 CPU 密集型的,您可以利用多处理同时运行查询:
<code class="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'])</code>
以上是以下是一些符合内容的基于问题的文章标题: * 如何使用子进程执行带有用户输入的Python脚本? * 从 Python 脚本捕获输出:子流程技术指南的详细内容。更多信息请关注PHP中文网其他相关文章!