从另一个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脚本退出后也可以工作。但请记住,它可能会导致僵尸进程出现在我们的系统中。