从另一个python脚本运行python脚本,但不是作为子进程

从另一个python脚本运行python脚本,但不是作为子进程

问题描述:

是否可以从另一个python脚本运行python脚本而不需要终止。从另一个python脚本运行python脚本,但不是作为子进程

父进程将在创建子进程后立即终止。

我想:

subprocess.Popen([sys.executable, "main.py"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE) 

也:

os.system(...) 

如果您知道其他Python脚本有一个main方法,你可以简单地在你的代码调用其他脚本:

import main 
... 
exit(main.main()) 

但这里的其他脚本调用脚本的上下文中执行。如果你想避免它,你可以使用os.exec...功能,通过推出一个新的Python解释器:

import os 
... 
os.execl(sys.executable, "python", 'main.py') 

exec类的功能将取代(在Unix-Linux的)当前的Python解释器与一个新的。

您可以再补充&在后台启动脚本:

import os 

os.system('/path/to/script.sh &') 

exit() 

在这种情况下推出的shell脚本将继续即使主Python脚本退出后也可以工作。但请记住,它可能会导致僵尸进程出现在我们的系统中。