【问题标题】:Forking Multiple Apps Under Python Subprocess在 Python 子进程下分叉多个应用程序
【发布时间】:2010-04-30 21:53:47
【问题描述】:

我一直在通过 Google 和 SO 寻找可以帮助我解决此问题的方法,但我遇到了障碍。我对 Python 有点陌生,但我正在寻找一种方法来运行多个将在后台连续运行的应用程序。

例如,我需要 4 个应用程序以将参数 -appnum 设置为不同的值来启动。我想用python来计数,然后启动一个新的应用程序,它将继续运行。

我以为我会使用 subprocess,但我对文档感到有点不知所措。

我还计划让应用打印出数字序列,并希望将其重定向到文件。我注意到一些 SO 问题谈到了这一点,但我对该怎么做有点困惑。

【问题讨论】:

    标签: python subprocess


    【解决方案1】:

    一个简单的开始方法可能是使用os.popen(),像这样:

    import os
    
    subprogs = [None] * 4
    for i in range(4):
        subprogs[i] = os.popen("app -appnum " + i, "r")
    

    从这里,您可以像读取文件一样读取每个subprog[i],捕获app 程序的输出。

    请注意,尽管文档说此功能已被弃用,但它仍然可以很好地用于许多用途。当您更熟悉os.popen() 的限制时,您可以探索subprocess 模块。

    【讨论】:

    • 请注意,os.popen 已弃用,取而代之的是 subprocess 模块。
    • @Mike Graham:你是对的,当然还有更多的 Pythonic 方式来编写代码。我想做一些尽可能简单易读的事情,因为 OP 表明他是 Python 新手。实际上,我可能会使用列表理解而不是 append() 来写。
    • 我真的不明白这样做如何让初学者更轻松。 list.__mul__ 是一个相对晦涩的 Python 功能,很少出现在普通代码中,阅读它并不清楚它的作用,并且是初学者错误的常见来源。它与使用索引进行迭代结合使用,这是某些语言中常见的一种模式,在这种模式中,它是错误的常见来源。另一方面,list.append 是自我记录的,不断有用,而且更惯用。我必须看到这与你完全不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2019-04-07
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    相关资源
    最近更新 更多