I'm looking for a quick bash script or program that will allow me to kick off a python script in a separate process. What's the best way to do this? I know this is incredibly simple, just curious if there's a preferred way to do it.
Your jargon is all confused. But in bash you can run a process in the background by appending a &
:
print foo.py &
The best way to do this is to do it in python! Have a look at the multiprocess libraries.
Here is a simple example from the links above:
from multiprocessing import Process
def f(name):
print 'hello', name
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
p.join()
bash
doesn't really do threads -- it does do processes just fine, though:
python whatever.py &
the &
at the end just means "don't wait for the subprocess to end" -- bash
will execute the command itself in a separate process anyway, it's just that normally it waits for that separate process to terminate (all Unix shells work that way since time immemorial).
Just use the ampersand (&) in order to launch the Python process in the background. Python already is executed in a separate process from the BASH script, so saying to run it "in a separate thread" doesn't make much sense -- I'm assuming you simply want it to run in the background:
#! /bin/bash
python path/to/python/program.py &
Note that the above may result in text being printed to the console. You can get around this by using redirection to redirect both stdout and stderr to a file. For example:
#! /bin/bash
python path/to/python/program.py > results.txt 2> errors.log &