我正在寻找一个快速的bash脚本或程序,它允许我在一个单独的进程中启动python脚本。最好的方法是什么?我知道这非常简单,只是好奇是否有一种首选方式。
答案 0 :(得分:18)
只需使用&符号(&)即可在后台启动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 &
答案 1 :(得分:4)
执行此操作的最佳方法是在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()
答案 2 :(得分:3)
bash
并不真正做线程 - 它确实做进程就好了:
python whatever.py &
最后的&
只是意味着“不要等待子进程结束” - bash
无论如何都会在一个单独的进程中执行命令,通常只是等待它单独的进程终止(所有Unix shell自古以来都以这种方式工作)。
答案 3 :(得分:2)
你的行话很困惑。但是在bash中,您可以通过附加&
来运行背景中的流程:
print foo.py &