Python:生成另一个程序

6 python spawn

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

result = os.system('sub-program.sh file.txt file.txt &')
Run Code Online (Sandbox Code Playgroud)

这工作得很好,但我(最终!)意识到我可以使用 Python 作为子程序,这会更好,所以我已经转换了它。生成它的最简单方法可能是:

result = os.system('python3 sub-program.py file.txt file.txt &')
Run Code Online (Sandbox Code Playgroud)

一些研究已经展示了几种更复杂的替代方法,但我的印象是最新且最受认可的方法是以下一种:

subprocess.Popen(["python3", "-u", "sub-program.py"])
Run Code Online (Sandbox Code Playgroud)

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

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

可选附加功能:

  • 从子程序向主程序发送回消息。
  • 让子程序在主程序退出时退出。

小智 0

感谢天王!

import subprocess
Run Code Online (Sandbox Code Playgroud)

在主程序的开头,这就是我想要的:

with open('output.txt', 'w') as f:   
  subprocess.Popen([spawned.py, parameter1, parameter2], stdout = f)
Run Code Online (Sandbox Code Playgroud)

第一行打开一个文件,用于存储第二行中启动的子程序的输出。在第二行中,方括号包含子程序的内容 - 名称后跟两个参数。这些参数在 sys.argv[1] 和 sys.argv[2] 的子程序中可用。之后是子进程参数 - f 表示输出到上面提到的文本文件。