从python脚本之外的python脚本运行python脚本

时间:2018-08-19 13:12:08

标签: python parallel-processing scripting execute

听起来像是谜语或玩笑,但实际上我还没有找到解决这个问题的方法。

实际上是什么问题?

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

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

摘要:

我想在“ FIRST.py”脚本“ SECOND.py”脚本中运行。但是没有线程模块,并且主要具有独立于FIRST.py脚本的SECOND.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 进行线程化,但是我觉得它是一种恶魔,而且我不认为我能熟练控制操场之外的线程:)

预先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

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

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

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