【问题标题】:Running python scrips at the same time with bash使用 bash 同时运行 python 脚本
【发布时间】:2017-06-27 18:36:55
【问题描述】:

我有 2 个脚本需要同时运行。一个脚本收集数据,另一个脚本实时绘制数据。

在 PC 上,我可以简单地打开 2 个 IDLE shell,它们会同时运行,但在 Mac 上,这是不可能的。

我按照这篇文章 (Run multiple python scripts concurrently) 中的建议编写了以下 bash 文件:

python script1.py &
python script2.py &

但这一次只能运行一个脚本。无论如何,在 Mac 上我可以让两个脚本同时运行吗?

【问题讨论】:

  • 请注意,我现在在 PC 上工作,一回到家就会切换到我的 mac。
  • 你可以将它写在一行中(& 周围有空格),你可以像这样运行尽可能多的进程:)
  • 我仍然看到同样的问题,它一次只能运行一个脚本。它将运行 script1.py,一旦我终止该脚本,它将移至 script2.py。我需要它们同时运行,因为一个依赖于另一个。这有意义吗?
  • 您正在后台启动 2 个进程,因此它们实际上是同时运行的。通过在脚本中添加一些打印来说服自己。
  • 也许你最好用 1 个脚本和线程。

标签: python bash shell


【解决方案1】:

您可以在 python 中使用subprocess.Popen() 完成所有操作

import subprocess
import sys

s1 = subprocess.Popen([sys.executable, 'script1.py'])
s2 = subprocess.Popen([sys.executable, 'script2.py'])
s1.wait()
s2.wait()

【讨论】:

  • 我在 Windows 7 上,不幸的是,这个解决方案对我不起作用。它仍然一次只运行一个脚本。
【解决方案2】:

出于我的目的,我能够找到一个稍微乏味的解决方法。我现在有 2 个单独的 bash 脚本,每个脚本都包含我最初发布的上述脚本中的一行。运行这两个 bash 脚本将在不同的 shell 中同时运行我的两个脚本。

作为旁注,有没有人知道我可以如何做类似的事情,我使用一个 bash 脚本来调用两个新的 bash 脚本?

【讨论】:

  • Joey -- 看看下面的 python 解决方案。这将适用于所有 python 平台,包括 Windows 和 OSX。
【解决方案3】:

这不是真的,在 OS X (Mac) 上可以正常工作。

script1.py

#! /usr/bin/env python
import time
time.sleep(1)
print "script1.py"

script2.py

#! /usr/bin/env python
print "script2.py"

运行

设置可执行权限并在shell中运行

./script1.py &
./script2.py &

输出将是

script2.py
script1.py

证明两者是同时运行的(因为首先显示第二个脚本的输出)

【讨论】:

    猜你喜欢
    • 2018-03-14
    • 1970-01-01
    • 2022-01-05
    • 2017-01-11
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 2023-04-07
    • 2021-11-30
    相关资源
    最近更新 更多