代码之家  ›  专栏  ›  技术社区  ›  Martin

从python脚本运行python脚本,但在python脚本之外运行

  •  1
  • Martin  · 技术社区  · 6 年前

    听起来像谜语或笑话,但实际上我还没有找到这个问题的答案。

    到底是什么问题?

    我想运行两个脚本。在第一个脚本中,我调用另一个脚本,但我希望它们继续并行,而不是在两个单独的线程中。我主要不希望第二个脚本在第一个python脚本中运行(这意味着如果我从python脚本运行Chrome浏览器,然后关闭python脚本,Chrome也将关闭)。

    我想要的是在Linux机器上:我打开两个终端,在每个终端上运行两个脚本——它们不是两个线程,它们彼此独立,关闭一个不会关闭另一个。或者它可以类似于在Linux机器上,我可以在后台的终端上运行两个带有“python xxx.py&”(&)符号的python脚本。

    总结:

    解决方案应该是在WINDOWS、LINUX和MAC上运行。

    顺便说一句: 我在windows上试过:

    subprocess.call(['python','second.py','&'])
    subprocess.call(['python','second.py'])
    os.system('python second.py') # I was desperate
    
    • 它们以串行方式运行,因此first.py脚本将被阻止,直到所有second.py完成。

    我没有尝试使用daemon=False进行线程处理 但我觉得这是一种恶魔,我觉得我的技能还没到我能控制操场外的线程的程度:)

    提前谢谢你的帮助

    1 回复  |  直到 6 年前
        1
  •  1
  •   Kai Guther    6 年前

    你可以使用 Popen 来自的构造函数 subprocess 模块启动后台进程,使用

    import subprocess
    p = subprocess.Popen(["python","second.py"])
    

    创建后台进程并执行 first.py