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

在单独的进程中运行python

  •  5
  • Bialecki  · 技术社区  · 14 年前

    我正在寻找一个快速的bash脚本或程序,它允许我在一个单独的过程中启动一个python脚本。最好的方法是什么?我知道这是非常简单的,只是好奇是否有一个首选的方法来做它。

    4 回复  |  直到 14 年前
        1
  •  16
  •   Michael Aaron Safyan    14 年前

    只需使用和号(&)就可以在后台启动python进程。python已经在与bash脚本不同的进程中执行,所以说“在单独的线程中”运行它没有什么意义——我假设您只是希望它在后台运行:

    #! /bin/bash
    python path/to/python/program.py &
    

    请注意,上述操作可能会导致文本被打印到控制台。您可以通过使用重定向将stdout和stderr重定向到一个文件来绕过这个问题。例如:

    #! /bin/bash
    python path/to/python/program.py > results.txt 2> errors.log &
    
        2
  •  4
  •   Shane C. Mason    14 年前

    最好的方法是用python来完成它!看看 multiprocess libraries .

    下面是上面链接中的一个简单示例:

    from multiprocessing import Process
    
    def f(name):
        print 'hello', name
    
    if __name__ == '__main__':
        p = Process(target=f, args=('bob',))
        p.start()
        p.join()
    
        3
  •  3
  •   Alex Martelli    14 年前

    bash 实际上不需要线程——它需要 过程 不过很好:

    python whatever.py &
    

    这个 & 最后的意思是“不要等待子进程结束”-- 猛击 无论如何,将在一个单独的进程中执行命令本身,这只是正常情况下它会等待该单独的进程终止(所有的Unix shell都是以这种方式工作的,从远古以来)。

        4
  •  2
  •   Ignacio Vazquez-Abrams    14 年前

    你的行话全搞混了。但是在bash中,您可以在 背景 通过追加 & :

    print foo.py &