我希望创建一个子进程,在父进程完成后运行。
我尝试过以下方法:
孩子已经创建了,但是父进程要等到孩子完成才结束。相反,我想快速完成并让孩子在后台完成艰苦的工作。有什么建议吗?
一些澄清:
- 它运行在Linux上(Ububntu Server 14.04) - 最好使用Python 2.7 - 我不想以任何方式与孩子进行通信。孩子是完全独立的进程。
我需要主进程快速完成,因为它将被从Web访问。它的目的是触发另一个脚本。结果稍后将通过电子邮件发送(由子进程)。所以,用户无需等待答案。只需快速“OK”,然后孩子开始。
编辑: 好吧。现在坦率地说,即使是我在这篇文章中的示例都在最简单的情况下工作(只有那两行+睡眠10秒钟+写文件的脚本=>主进程完成并且我在10秒钟内得到一个文件)。 实际情况略微复杂。
有一个脚本,它迭代执行一个脚本列表。这个主要脚本使用subprocess.Popen和communicate()(等待输出)。这调用我在这里寻求帮助的“主”脚本。这个“主”做一些事情,然后想在后台运行一个子进程。在这种情况下,“主”等待孩子。
我尝试过以下方法:
subprocess.Popen(['myscript'])
exit()
孩子已经创建了,但是父进程要等到孩子完成才结束。相反,我想快速完成并让孩子在后台完成艰苦的工作。有什么建议吗?
一些澄清:
- 它运行在Linux上(Ububntu Server 14.04) - 最好使用Python 2.7 - 我不想以任何方式与孩子进行通信。孩子是完全独立的进程。
我需要主进程快速完成,因为它将被从Web访问。它的目的是触发另一个脚本。结果稍后将通过电子邮件发送(由子进程)。所以,用户无需等待答案。只需快速“OK”,然后孩子开始。
编辑: 好吧。现在坦率地说,即使是我在这篇文章中的示例都在最简单的情况下工作(只有那两行+睡眠10秒钟+写文件的脚本=>主进程完成并且我在10秒钟内得到一个文件)。 实际情况略微复杂。
有一个脚本,它迭代执行一个脚本列表。这个主要脚本使用subprocess.Popen和communicate()(等待输出)。这调用我在这里寻求帮助的“主”脚本。这个“主”做一些事情,然后想在后台运行一个子进程。在这种情况下,“主”等待孩子。
subprocess.Popen(['myscript'], start_new_session=True)
。 - multivac