gpt4 book ai didi

Python:产生另一个程序

转载 作者:行者123 更新时间:2023-11-28 18:33:14 24 4
gpt4 key购买 nike

我有一个 Python 程序,我从中生成一个子程序来处理一些文件,而无需阻止主程序。我目前正在为子程序使用 bash,从一个命令和两个参数开始,如下所示:

result = os.system('sub-program.sh file.txt file.txt &')

这很好用,但我(最终!)意识到我可以将 Python 用于子程序,这会更可取,所以我转换了它。生成它的最简单方法可能是:

result = os.system('python3 sub-program.py file.txt file.txt &')

一些研究显示了几种更复杂的替代方法,但我的印象是最新和最受认可的方法是这个:

subprocess.Popen(["python3", "-u", "sub-program.py"])

我认为这是最合适的做法是否正确?有人会推荐一种不同的方法吗?为什么?简单就好,因为我是一个 Python 新手。

如果这是推荐的方法,我大概可以弄清楚“-u”的作用以及如何为自己添加参数。

可选附加项:

  • 从子程序向主程序发回消息。
  • 让子程序随主程序退出。

最佳答案

是的,根据文档,使用 subprocess 是推荐的方式:

The subprocess module provides more powerful facilities for spawning new processes and retrieving their results; using that module is preferable to using this function.

但是,subprocess.Popen 可能不是您要查找的内容。与 os.system 相反,您将创建一个与子进程相对应的 Popen 对象,并且您必须等待它 wait 才能等待它完成,fx:

proc = subprocess.Popen(["python3", "-u", "sub-program.py"])

do_something()

res = proc.wait()

如果你只想运行一个程序并等待完成,你应该使用 subprocess.run(或者 subprocess.callsubprocess.check_callsubprocess.check_output) 而不是。

关于Python:产生另一个程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34952291/

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