def run(self): print("Waiting....") while self.isUpdates.wait(): print("Something to process !") programToRun=None with self.lock: if len (self.programs) != 0: print("number of programs",len (self.programs)) programToRun = self.programs.pop() if programToRun != None: #programToRun["client"].running=True #Has the program already been started once ? if "program" not in programToRun.keys(): programToRun.update(CPU.startProgram(programToRun["programString"])) else: programToRun.update(CPU.execute(programToRun["program"],programToRun["memory"],programToRun["state"])) #programToRun["client"].running=False with self.lock: if len(programToRun["program"])==programToRun["state"]: print("program finished", "memory is ",hex(id(programToRun["memory"])), "of" ,programToRun["programString"]) else: self.programs.appendleft(programToRun) else : self.isUpdates.clear() print ("Waiting for new programs to process...")