I have been searching for a way to start and terminate a long-running \"batch jobs\" in python. Right now I\'m using \"os.system()\" to launch a long-running batch job insid
If you want control over start and stop of child processes you have to use threading. In that case, look no further than Python's threading module.
If you are on a Posix-compatible system (e.g., Linux or OS X) and no Python code has to be run after the child process, use os.execv
. In general, avoid os.system
and use the subprocess
module instead.
subprocess module is the proper way to spawn and control processes in Python.
from the docs:
The subprocess module allows you to spawn new processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace several other, older modules and functions, such as:
os.system
os.spawn
os.popen
popen2
commands
so... if you are on Python 2.4+, subprocess
is the replacement for os.system
for stopping processes, check out the terminate()
and communicate()
methods of Popen
objects.