将当前进程替换为子进程调用?

30

在Python中,是否有一种方法可以调用一个新进程,将相同的上下文传递给它(如标准IO流),关闭当前进程并控制被调用的进程?这将有效地“替换”进程。

我有一个程序,我想要重复它的行为。然而,它使用了一个第三方库,似乎唯一能够真正杀死由该库调用的线程的方法是退出我的Python进程。

此外,它似乎可以帮助管理内存。

1个回答

38
您可能对os.execv() 和相关函数感兴趣:
这些函数都会执行一个新的程序,替换当前进程;它们不会返回。在Unix系统下,新的可执行文件将被加载到当前进程中,并且具有与调用者相同的进程ID。错误将作为OSError异常报告。

10
请注意,一个调用看起来会有点像 os.execvp('python.exe', ['python.exe', 'arg1', 'arg2'])。注意到有点令人费解的 'python.exe' 出现了两次。更多细节请参考这个答案 - Evgeni Sergeev
有没有相应的“subprocess”调用我们应该使用? - tback
1
@tback - 不完全是- 这更多的是一个特定于平台的事情,并且通常被认为比生成单独的子进程更加小众化。 - detly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接