Python在另一个cmd窗口中重启脚本

时间:2017-04-26 15:45:08

标签: python c imap restart

有没有办法在另一个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我的意思是终端窗口

3 个答案:

答案 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. 有一个在登记电子邮件上运行,另一个在输入上运行,因此它不会在那些时刻停止并且可以使多个“架子”成为可能,因为它们是平行的。

如果你真的想要一个不同的窗口,我很抱歉,我无法帮助。

希望这是你在寻找的。