Process Dispatcher
This is a script I hacked together in Python to be able to run several processes in parallel easily. You specify a program to run as the argument to the script itself, then the script presents a shell where you can input a "real" argument for the program previously specified. Once an argument has been entered on the shell, a sub process is started in the background, and the shell is immediately ready for a new argument. A practical usage of this is to download several files in parallel with "wget". Simply start the script with wget as the argument and enter URLs on the shell to download them. A counter in the shell prompt is used to keep track of how many sub processes are ongoing.
Enjoy:
#!/usr/bin/python
import threading
import subprocess
class Dispatcher(object):
def __init__(self, command):
self.command = command
class _Executor(threading.Thread):
def __init__(self, command, arg):
threading.Thread.__init__(self)
self.command = command
self.arg = arg
def run(self):
null = open("/dev/null")
subprocess.call([self.command, self.arg], stdout=null, stderr=null)
null.close()
def run(self):
while True:
arg = raw_input(str(threading.active_count() - 1) + ">")
if arg == 'quit':
break
if len(arg) > 0:
thread = self._Executor(self.command, arg)
thread.start()
else:
for thread in threading.enumerate():
if thread.name != "MainThread":
print thread.arg
if __name__ == "__main__":
import sys
if len(sys.argv) > 1:
d = Dispatcher(sys.argv[1])
d.run()
sys.exit(0)
else:
print "Usage: %s <executable command>" % (sys.argv[0])
sys.exit(1)