def submit(self, task_name: str, task_cfg: dict): """提交一个Task Args: task_name: task的名字,需要保证不重复,其会作为task的唯一标识符,建议传入视频或摄像头名称 task_cfg: task的数据字典 Returns: 返回是否返回值 """ # 如果超过了最多的提交数量限制 if len(self.tasks) >= TaskConfig.MAX_TASK_NUM: raise RuntimeError("超过了最多的提交数量限制".format(task_name)) if self.is_exist(task_name): raise RuntimeError("请勿重复提交task_name为{}的Task任务".format(task_name)) task = Task(task_cfg) task.build(timeout=20) self.tasks[task_name] = task
def read_info_from_task(mqs): try: while True: for mq in mqs: img_info = mq.get(timeout=5) except Empty: print('主进程结束') if __name__ == '__main__': # Linux平台启动 if platform.system() == 'Linux': mp.set_start_method('spawn', force=True) # 建模任务 args = parse_args() if not osp.exists(args.i): raise AttributeError('输入文件不存在') print('处理视频为{},保存环境模型到{},是否开启方向矫正:{}'.format(args.i, args.o, args.revise)) TaskCfg['head'][0]['filename'] = args.i TaskCfg['backbones'][0][1]['modelPath'] = args.o TaskCfg['backbones'][0][1]['revise'] = args.revise TaskCfg['backbones'][0][1]['dataNum'] = args.n task = Task(TaskCfg) mqs = task.build() task.start() readt = Thread(target=read_info_from_task, args=(mqs, )) readt.start() readt.join()