def dispatch_and_retrieve_jobs()

in LaNAS/Distributed_LaNAS/server/MCTS.py [0:0]


    def dispatch_and_retrieve_jobs(self, server = None):
        while len(self.TASK_QUEUE) > 50:
            is_send_successful = False
            job  = self.TASK_QUEUE.pop()
            try:
                print("########################")
                print( "job counter:", self.JOB_COUNTER )
                print( "get job from QUEUE==>", job ) 
                print("listening......")
                conn = server.accept()
                conn.send( [job] )
                conn.close()
                is_send_successful = True
                self.TOTAL_SEND += 1
                print("==>dispatch job:", " total_send:", self.TOTAL_SEND, " total_recv:", self.TOTAL_RECV )
                self.JOB_COUNTER += 1
            
                for i in range(0, 5):
                    conn = server.accept()
                    if conn.poll(0.5):
                        receive_signal               = conn.recv()
                        client_name                  = receive_signal[0]
                        job_str                      = receive_signal[1]
                        acc                          = receive_signal[2]
                        self.DISPATCHED_JOB[job_str] = acc
                        self.samples[job_str]        = acc
                        if acc > self.MAX_ACC:
                            self.MAX_ACC = acc
                        received = True
                        self.TOTAL_RECV += 1
                        print("retrieve job, curt max acc:", self.MAX_ACC)
                        print("="*10, " total_send:", self.TOTAL_SEND, " total_recv:", self.TOTAL_RECV)
                        if received:
                            self.JOB_COUNTER -= 1
                            print(client_name, "==> net:", job_str, acc, " total samples:", len(self.samples)," job counter:", self.JOB_COUNTER )

            except Exception as error:
                if not is_send_successful:
                    self.TASK_QUEUE.append(job)
                print("send or recv timeout, curt queue len:", len(self.TASK_QUEUE) )