Files
mlpack/fastlib/script/fx-rpc
T
2007-07-22 17:11:42 +00:00

52 lines
1.0 KiB
Python
Executable File

#!/usr/bin/env python
USAGE="""
fx-rpc -- run programs written with garry's makeshift sockets api thing
"""
import os
import signal
import sys
import util
import time
# note: we're not using fx for parameter parsing right now...
n = int(sys.argv[1])
if n <= 0:
print "error: n must be positive"
os.exit(1)
peers = os.path.abspath(sys.argv[2])
executable = os.path.abspath(sys.argv[4])
port = int(sys.argv[3])
peerlist = util.readlines(peers)
pids = []
try:
for i in range(n):
machinename = peerlist[i]
print "****** CONNECTING TO %s ******" % machinename
pid = os.fork()
if not pid:
argv = ["ssh", "-x", machinename, executable] + sys.argv[5:] + [
"--rpc/n=%d"%n, "--rpc/rank=%d"%i,
"--rpc/port=%d"%port, "--rpc/peers=%s"%peers,
]
print " ".join(argv)
os.execvp(argv[0], argv)
pids.append(pid)
for pid in pids:
os.waitpid(pid, 0)
except:
print "Exception!!"
for pid in pids:
try:
os.kill(pid, signal.SIGTERM)
except:
print "Kill failed"