pref: 修改子任务为类
This commit is contained in:
104
subtask.py
104
subtask.py
@@ -4,22 +4,23 @@ import time
|
||||
|
||||
# 任务类
|
||||
class task:
|
||||
def __init__(self, task_operation, enable=True):
|
||||
def __init__(self, func_exec, func_find, enable=True):
|
||||
self.enable = enable
|
||||
self.task_operation = task_operation
|
||||
def check(self):
|
||||
# 检查该任务是否需要执行
|
||||
self.func_exec = func_exec
|
||||
self.func_find = func_find
|
||||
def find(self):
|
||||
# 检查该任执行标志
|
||||
# TODO 完善该接口,是否需要单独为每种 task 编写一个函数,还是设置一个通用的过滤器(从 detection 模块过滤结果)
|
||||
ret = True
|
||||
return ret
|
||||
def execute(self):
|
||||
while self.func_find() is False:
|
||||
pass
|
||||
def exec(self):
|
||||
# 根据标志位确定是否执行该任务
|
||||
if self.enable is True:
|
||||
logger.info(f"[Task]#Executing task \"{self.task_operation.__name__}\"")
|
||||
self.task_operation()
|
||||
logger.info(f"[Task]#Task \"{self.task_operation.__name__}\" completed.")
|
||||
logger.debug(f"[Task ]# Executing task")
|
||||
self.func_exec()
|
||||
logger.debug(f"[Task ]# Task completed")
|
||||
else:
|
||||
logger.warning(f"[Task]#Skip task \"{self.task_operation.__name__}\"")
|
||||
logger.warning(f"[Task ]# Skip task")
|
||||
|
||||
# 任务队列状态类
|
||||
class task_queuem_status(Enum):
|
||||
@@ -35,13 +36,13 @@ class task_queuem(task):
|
||||
self.queue = queue
|
||||
self.status = task_queuem_status.IDEL
|
||||
self.busy = True
|
||||
logger.info(f"[TaskM]#Task num {self.queue.qsize()}")
|
||||
logger.info(f"[TaskM]# Task num {self.queue.qsize()}")
|
||||
def exec(self):
|
||||
# 如果空闲状态则将下一个队列任务取出
|
||||
if self.status is task_queuem_status.IDEL:
|
||||
if self.queue.qsize() == 0:
|
||||
self.busy = False
|
||||
logger.info(f"[TaskM]#Task queue empty, exit")
|
||||
logger.info(f"[TaskM]# Task queue empty, exit")
|
||||
return False
|
||||
self.task_now = self.queue.get()
|
||||
|
||||
@@ -51,58 +52,85 @@ class task_queuem(task):
|
||||
else:
|
||||
self.status = task_queuem_status.EXECUTING
|
||||
|
||||
logger.info(f"[TaskM]#Start process task \"{self.task_now.task_operation.__name__}\" >>>>")
|
||||
logger.info(f"[TaskM]# ---------------------->>>>")
|
||||
# 阻塞搜索任务标志位
|
||||
elif self.status is task_queuem_status.SEARCHING:
|
||||
logger.info(f"[TaskM]#Start searching task target")
|
||||
while self.task_now.check() is False: # TODO 增加超时处理
|
||||
break
|
||||
logger.info(f"[TaskM]# Start searching task target")
|
||||
self.task_now.find()
|
||||
self.status = task_queuem_status.EXECUTING
|
||||
# 执行任务函数
|
||||
elif self.status is task_queuem_status.EXECUTING:
|
||||
logger.info(f"[TaskM]#Start execute task function")
|
||||
self.task_now.execute() # 执行当前任务函数
|
||||
logger.info(f"[TaskM]# Start execute task function")
|
||||
self.task_now.exec() # 执行当前任务函数
|
||||
self.queue.task_done() # 弹出已执行的任务
|
||||
self.status = task_queuem_status.IDEL #
|
||||
logger.info(f"[TaskM]#finish process task {self.task_now.task_operation.__name__} <<<<")
|
||||
logger.info(f"[TaskM]# <<<<----------------------")
|
||||
return True
|
||||
|
||||
|
||||
|
||||
|
||||
# 人员施救
|
||||
def get_block():
|
||||
pass
|
||||
class get_block():
|
||||
def find():
|
||||
return True
|
||||
def exec():
|
||||
pass
|
||||
|
||||
|
||||
# 紧急转移
|
||||
def put_block():
|
||||
pass
|
||||
class put_block():
|
||||
def find():
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 整装上阵
|
||||
def get_bball():
|
||||
pass
|
||||
class get_bball():
|
||||
def find():
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 通信抢修
|
||||
def up_tower():
|
||||
pass
|
||||
class up_tower():
|
||||
def find():
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 高空排险
|
||||
def get_rball():
|
||||
pass
|
||||
class get_rball():
|
||||
def find():
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 派发物资
|
||||
def put_bball():
|
||||
pass
|
||||
class put_bball():
|
||||
def find():
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 物资盘点
|
||||
def put_hanoi():
|
||||
pass
|
||||
class put_hanoi():
|
||||
def find():
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 应急避险
|
||||
def move_area():
|
||||
pass
|
||||
class move_area():
|
||||
def find():
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
# 扫黑除暴
|
||||
def kick_ass():
|
||||
pass
|
||||
class kick_ass():
|
||||
def find():
|
||||
return False
|
||||
def exec():
|
||||
pass
|
||||
|
||||
|
||||
Reference in New Issue
Block a user