#!/usr/bin/env python from time import sleep from Queue import Queue from myQueue import PriorityQueue from Worker import LocalWorker, SSHWorker from ImageProducer import VideoCapture from CERTProcessor import CVImageViewer from IPython.Shell import IPShellEmbed numLocalWorkers = 0 #remoteWorkers = ['shallowblue'] remoteWorkers = [] remoteWorkers += ['10.0.0.%d' % (i) for i in range(2,13)]*3; #remoteWorkers += ['10.0.0.%d' % (i) for i in range(2,9)]; #remoteWorkers +=['rubi2', 'born'] #remoteWorkers += ['ekman']; def main(): #global job Queue job_queue = Queue(0); result_queue = PriorityQueue(0); ready_queue = Queue(0); #fire workers numWorkers = len(remoteWorkers)+numLocalWorkers; print 'Fire %d Workers' % numWorkers for i in range(numWorkers): ready_queue.put(None) for i in range(numLocalWorkers): LocalWorker('local-%d' % i, job_queue, result_queue, ready_queue).start(); for host in remoteWorkers: SSHWorker('ssh-%s' % host, job_queue, result_queue, host, ready_queue).start(); ready_queue.join() #start CERT output processor print 'Start Image Consumer' iv = CVImageViewer('viewer', result_queue) iv.start(); #start VideoCapture or Processing Video print 'Start Image Producer' vc=VideoCapture('webcam', job_queue, delay=0.05, maxqsize=2*numWorkers) vc.start() #prepare IPython Shell Environment def h(): print "producer: Q=", job_queue.qsize(), vc.rate.getRate(), 'fps' print "consumer: Q=", result_queue.qsize(), iv.rate.getRate(), 'fps' #start atiIPythoo Shell argv,banner,exit_msg, sleep(5) vc.delay=0.01 #iv.plotDelay=0.1 ipshell = IPShellEmbed() ipshell() #wait to finish, put StopToken: None iv.nextLoop = False vc.nextLoop = False for i in range(numWorkers): job_queue.put(None) job_queue.join() #make sure everyone's done if __name__ == '__main__': try: main() except KeyboardInterrupt: raise SystemExit