【问题标题】:Run python script from python script BUT outside of python script从 python 脚本但在 python 脚本之外运行 python 脚本
【发布时间】:2018-08-19 13:12:07
【问题描述】:

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

真正的问题是什么?

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

我想要的就像在 Linux 机器上一样:我打开两个终端并在每个终端中运行两个脚本 - 它们不是两个线程,它们彼此独立,关闭一个不会关闭另一个。或者它可以像在 Linux 机器上一样,我可以在后台使用 'python xxx.py &' (&) 符号在终端中运行 2 个 python 脚本。

总结:

我想在 'FIRST.py' 脚本 'SECOND.py' 脚本中运行。但不是线程模块,主要是 SECOND.py 脚本独立于 FIRST.py 脚本,即关闭 FIRST.py 不会对 SECOND.py 产生任何影响。 该解决方案应该适用于 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 进行线程处理,但我觉得它有点像恶魔,我觉得我的技能还没有到可以控制操场外存在的线程的程度:)

提前感谢您的帮助

【问题讨论】:

标签: python parallel-processing scripting execute


【解决方案1】:

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

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

创建一个后台进程,first.py 的执行不会被阻止。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2011-05-26
    相关资源
    最近更新 更多