-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathmaster.py
35 lines (28 loc) · 896 Bytes
/
master.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/python
import xmlrpclib
from Queue import Queue, PriorityQueue
from threading import Thread
WORKERS = [('localhost', 7331)]*8
tasks = PriorityQueue()
results = Queue()
def worker(host, port=7331):
#print "http://%s:%d/" % (host, port)
w = xmlrpclib.ServerProxy("http://%s:%d/" % (host, port))
while True:
task = tasks.get(True)[1]
response = w.runTask(task['program'], task['args'], task['inputs'])
results.put((task['path'], response))
tasks.task_done()
def assignTask(data, priority=100):
tasks.put((priority, data))
def getResult():
(path, data) = results.get(True)
data = data.split('========', 1)[1].strip().split('\n')
results.task_done()
return (path, data)
def startWorkers():
for (h,p) in WORKERS:
t = Thread(target=worker, args=(h,p))
t.daemon = True
t.start()
startWorkers()