from atk.configs.case_config import CaseConfig
from atk.configs.nodes_config import NodesConfig
from atk.tasks.task_creator.base_task import BaseTasks
from atk.tasks.task_creator.aclnn_task import AclnnTask
from atk.tasks.backends import BackendsFactory
class TaskCreator:
def __init__(
self, args, nodes_config: NodesConfig
):
self.args = args
self.nodes_config = nodes_config
self.task = None
self.init_config()
def init_config(self):
"""
初始化配置
"""
if BackendsFactory.is_aclnn(self.nodes_config.get_main_node().backend):
task = AclnnTask
else:
task = BaseTasks
self.task = task(self.args, self.nodes_config)
def run_for_case(self, case_config, task_id=None, all_cases_num=None):
"""
创建任务链
return: chain()
"""
task = self.task.create_task(
case_config,
task_id=task_id,
all_cases_num=all_cases_num
)
return task
def create_clean_callback_task(self, case_config: CaseConfig):
"""
创建清理数据任务
"""
if self.task is None:
task = BaseTasks(self.args, self.nodes_config)
else:
task = self.task
return task.create_clean_callback_task(case_config)
def create_task_result(self, case_config: CaseConfig):
if self.task is None:
task = BaseTasks(self.args, self.nodes_config)
else:
task = self.task
return task.create_task_result(case_config)