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.
-
1It appears that you mean "process". Please update your question.S.Lott– S.Lott2010年06月02日 02:29:26 +00:00Commented Jun 2, 2010 at 2:29
4 Answers 4
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 &
2 Comments
2>errors.log (without the ampersand after the "2").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()
Comments
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).
Comments
Your jargon is all confused. But in bash you can run a process in the background by appending a &:
print foo.py &