有没有办法在另一个shell中重启另一个脚本? 我有脚本有时等待从gmail和imap阅读电子邮件。从另一个脚本我想重新启动主要的,但没有停止执行第二个 我试过了:
os.system("C:\Users\light\Documents\Python\BOTBOL\Gmail\V1\send.py")
process = subprocess.Popen(["python", "C:\Users\light\Documents\Python\BOTBOL\Gmail\V1\send.py"])
但两个都在第二个shell中运行main 编辑: 抱歉,对于shell我的意思是终端窗口
答案 0 :(得分:0)
Subprocess有一个名为shell的选项,这就是你想要的。 Os调用是阻塞的,这意味着只有在命令完成后,解释器才会移动到下一行。另一方面,子进程popens是非阻塞的,但是这两个命令都会从运行此代码的进程中生成子进程。如果你想在shell中运行并获得访问shell功能来执行它,请在子进程中尝试shell = True。
答案 1 :(得分:0)
在您的最后一条评论之后,由于语法显示您使用的是Windows,我假设您要在另一个控制台中启动Python脚本。如果你想让启动与新的并行执行,那么这里的神奇字是START
,如果你想等待子进程的结束,那么START /W
。
在您的情况下,您可以使用:
subprocess.call(["cmd.exe", "/c", "START", "C:\Path\To\PYTHON.EXE",
"C:\Users\light\Documents\Python\BOTBOL\Gmail\V1\send.py"])
答案 2 :(得分:0)
我可以尝试解释您需要的所有内容,但我认为此视频会做得更好:Youtube Video about multithreading
这将允许你运行两件事f.e. 有一个在登记电子邮件上运行,另一个在输入上运行,因此它不会在那些时刻停止并且可以使多个“架子”成为可能,因为它们是平行的。
如果你真的想要一个不同的窗口,我很抱歉,我无法帮助。
希望这是你在寻找的。 p>