CN113485810A - 一种任务的调度执行方法、装置、设备及存储介质 - Google Patents
一种任务的调度执行方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113485810A CN113485810A CN202110837725.6A CN202110837725A CN113485810A CN 113485810 A CN113485810 A CN 113485810A CN 202110837725 A CN202110837725 A CN 202110837725A CN 113485810 A CN113485810 A CN 113485810A
- Authority
- CN
- China
- Prior art keywords
- task
- tasks
- pool
- execution
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000004590 computer program Methods 0.000 claims description 19
- 230000004044 response Effects 0.000 claims description 15
- 238000012545 processing Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 description 177
- 238000001514 detection method Methods 0.000 description 15
- 230000001360 synchronised effect Effects 0.000 description 11
- 238000011161 development Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000002407 reforming Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种任务的调度执行方法、装置、设备及存储介质,包括:获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联;其中,目标函数为任务执行函数的装饰器,至少一个任务的目标函数输入参数中包括其他任务的目标函数输出参数,输出参数为异步变量,输出参数的状态包括任务执行函数执行后的就绪状态和任务执行函数执行前的准备状态;将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。本发明实施例的技术方案可以准确、快速地实现多个具有依赖关系的任务间的异步调度。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种任务的调度执行方法、装置、设备及存储介质。
背景技术
多线程技术可以实现多任务的异步执行,从而高效利用CPU的多核计算能力,提高任务的执行效率。目前,常用的异步执行策略是使用线程池套用生产者消费者模型,把任务进行分拆,并将拆分后的任务放入队列,由线程池中的线程从队列中获取任务并执行。
然而,上述异步执行策略需要使用线程同步机制,解决资源访问冲突和任务等待超时等问题,并且当任务之间存在依赖关系时,通常需要多个线程池来进行处理。如果任务间的依赖关系比较复杂时,很难使用多线程异步执行的方法提升多任务的执行速度。
发明内容
本发明实施例提供一种任务的调度执行方法、装置、设备及存储介质,可以准确、快速地实现多个具有依赖关系的任务间的异步调度。
第一方面,本发明实施例提供了一种任务的调度执行方法,包括:
获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联;
其中,目标函数为任务执行函数的装饰器,至少一个任务的目标函数输入参数中包括其他任务的目标函数输出参数,输出参数为异步变量,输出参数的状态包括任务执行函数执行后的就绪状态和任务执行函数执行前的准备状态;
将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。
第二方面,本发明实施例还提供了一种任务的调度执行装置,包括:
任务获取模块,用于获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联;
其中,目标函数为任务执行函数的装饰器,至少一个任务的目标函数输入参数中包括其他任务的目标函数输出参数,输出参数为异步变量,输出参数的状态包括任务执行函数执行后的就绪状态和任务执行函数执行前的准备状态;
任务分配模块,用于将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。
第三方面,本发明实施例还提供了一种计算机设备,该计算机设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器执行所述计算机程序时本发明任意实施例提供的任务的调度执行方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例提供的任务的调度执行方法。
本发明实施例提供的技术方案,通过获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联,将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数的技术手段,可以降低开发者进行任务调度的难度,提高多个任务的调度执行效率。
附图说明
图1是本发明一实施例提供的一种任务的调度执行方法的流程图;
图2是本发明另一实施例中的一种任务的调度执行方法的流程图;
图3是本发明另一实施例中的一种任务的调度执行方法的流程图;
图4是本发明另一实施例中的一种任务的调度执行装置的结构示意图;
图5是本发明另一实施例中的一种计算机设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的实施例。虽然附图中显示了本发明的某些实施例,然而应当理解的是,本发明可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本发明。应当理解的是,本发明的附图及实施例仅用于示例性作用,并非用于限制本发明的保护范围。
应当理解,本发明的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本发明的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本发明中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本发明中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本发明实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
相关技术中,如果产品设计阶段没有考虑多任务的异步执行,而后期想要通过对同步执行代码进行改造以实现任务的异步执行,则需要对原有的计算机程序结构做大量调整,成本高,且容易的导致计算机程序结构不稳定,而且异步执行与同步执行的代码差异巨大,几乎无法通过一套代码既实现异步执行又实现同步执行。
另外,多线程的复杂度高,对开发者要求也高,若开发者无法正确运用多线程开发技术,却强行使用多线程开发,容易导致计算机程序运行不稳定,造成开发效率低下,开发周期长,无法按期完成开发任务,且由于多线程逻辑复杂,后期维护成本也很高。
图1为本发明一实施例提供的一种任务的调度执行方法的流程图,本发明实施例可适用于对多个具有依赖关系的任务进行异步调度的情况,该方法可以由任务的调度执行装置来执行,该装置可由硬件和/或软件组成,并一般可集成在计算机设备中。如图1所示,该方法具体包括如下步骤:
步骤110,获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联。
在本实施例中,开发者可以预先将一项完整的待处理的任务拆分成多个具有依赖关系的子任务,然后构建与各子任务匹配的目标函数。在获取到上述多个具有依赖关系的任务后,可以根据开发者预先设置的各任务与目标函数之间的映射关系,将各任务与匹配的目标函数关联。
在一个具体的例子中,如果对一个任务执行之前需要等待另外的一个任务的执行完成,则可以确定这两个任务之间具有依赖关系。具体的,一个任务可能会依赖一个或者多个任务,例如,任务A执行完成后,产出参数a,任务B执行完成后,产出参数b,而任务C的执行需要同时使用参数a和参数b,则说明书任务C需要同时依赖任务A和任务B,也即,任务C同时与任务A和任务B具有依赖关系。
需要说明的是,前文所述的多个具有依赖关系的任务并非具体限定任意两两任务之间均具有依赖关系,而是指上述多个任务中的一个或者至少两个任务与另外的一个或者至少两个任务之间具有依赖关系,例如,前例所述的任务A和任务B之间可能就不具有依赖关系。
在此步骤中,所述目标函数为任务执行函数的装饰器,所述任务执行函数为对某一任务处理时需要执行的函数,所述函数具体可以为计算机程序或代码。每个目标函数中都包括一组输入参数和输出参数,所述输入参数为目标函数(也就说目标函数中的任务执行函数)执行过程的依据或者说必须使用的输入数据,所述输出参数可以为目标函数执行结束后得到的执行结果。在上述多个具有依赖关系的任务中,至少一个任务的目标函数输入参数中包括其他任务的目标函数输出参数,输出参数为异步变量。
在一个具体的实施例中,如果上述多个任务中存在某一任务不需要依赖其他任务执行时,则该任务的目标函数输入参数可以为任意类型的立即数;如果某一任务需要依赖另外一个或者多个任务执行时,则该任务的目标函数输入参数中可以仅包括所依赖的任务的目标函数输出参数,或者可以同时包括所依赖的任务的目标函数输出参数与任意类型的立即数。其中,目标函数输出参数为异步变量,这样设置的好处在于,可以保证各目标函数的执行过程互不相干,从而实现对多个任务进行异步调度。
在本实施例中,输出参数的状态包括任务执行函数执行后的就绪状态和任务执行函数执行前的准备状态。其中,假设上述多个任务中存在任务B依赖任务A,则任务B的目标函数输入参数中包括任务A的目标函数输出参数。如果完成了对任务A的任务执行函数的执行,则任务A的目标函数输出参数的状态为就绪状态;反之,如果没有完成对任务A的任务执行函数的执行,则任务A的目标函数输出参数的状态为准备状态。
步骤120,将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。
在本实施例中,开发者可以预先根据各任务对应的处理类型(例如同步执行或者异步执行)将各任务进行分类。在将各任务与匹配的目标函数关联后,可以根据各任务对应的分类结果,将各任务分配至匹配的任务池。其中,如果任务的处理类型为同步执行,则可以将该任务分配至等待同步执行的任务池中,如果任务的处理类型为异步执行,则可以将该任务分配至等待异步执行的任务池中。
在将各任务分配至匹配的任务池后,可以在任务池包括的多个任务中,根据各任务的目标函数输入参数,筛选满足输入参数就绪条件的任务。其中,如果某一任务的目标函数输入参数中包括一个或者多个其他任务的目标函数输出参数,且全部目标函数输出参数的状态均为就绪状态,则可以确认该任务满足输入参数就绪条件;如果某一任务的目标函数输入参数全部为立即数,则也可以确认该任务满足输入参数就绪条件。
在此步骤中,如果当前时刻下在等待同步执行的任务池中,存在一个满足输入参数就绪条件的任务,则将该任务调度至处理器中,以执行匹配的目标函数;如果当前时刻下在等待同步执行的任务池中,存在多个满足输入参数就绪条件的任务,则可以按照任务分配的顺序,将先分配的任务调度至处理器中,以执行匹配的目标函数,并在该目标函数执行完成之后,将后分配的任务调度至处理器中,以执行匹配的目标函数。
在此步骤中,如果当前时刻下在等待异步执行的任务池中,存在一个满足输入参数就绪条件的任务,则将该任务调度至处理器中,以执行匹配的目标函数;如果当前时刻下在等待异步执行的任务池中,存在多个满足输入参数就绪条件的任务,则可以将这多个任务调度至处理器中,以对多个任务匹配的目标函数异步执行。
其中,将各任务池中满足输入参数就绪条件的任务调度至处理器后,处理器可以根据各任务的目标函数,获取到对应的任务执行函数,并完成对各任务执行函数的执行。
在本实施例中,通过构建与各任务匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中的任务调度至处理器中,可以同时实现多个任务中一部分任务同步执行,另一部分任务异步执行;其次,通过预先构建与各任务匹配的目标函数,一方面可以实现在任务调度过程中,根据目标函数自动识别各任务之间的依赖关系,进而提高任务的调度效率;另一方面,由于目标函数为任务执行函数的装饰器,在对目标函数构建时无需对原有任务执行函数进行调整,由此可以实现任务调度执行过程的非侵入式开发,降低开发者进行任务调度的执行难度,降低任务调度所消耗的时间成本。
本发明实施例提供的技术方案,通过获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联,将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数的技术手段,可以降低开发者进行任务调度的执行难度,提高多个任务的调度执行效率。
本发明又一实施例提供了一种任务的调度执行方法,本实施例以上述实施例为基础,具体介绍采用与任务池对应的异步调度策略,将任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数的任务调度执行方法。
图2为本发明又一实施例提供的任务调度方法的流程图,本实施例以上述技术方案为基础,提供了一种任务的调度执行方法,该方法包括:
步骤210、在检测到有待处理的标准执行任务时,将所述标准执行任务拆分得到多个具有依赖关系的任务。
在本实施例中,标准执行任务可以为完整的待处理任务。在检测到有开发者提交的标准执行任务后,可以根据标准执行任务的操作流程,以及标准执行任务中各个操作之间的关联关系,将标准执行任务拆分得到多个具有依赖关系的任务。
在一个具体的实施例中,假设用户的实际需求是对某个视频进行人脸识别,则可以生成对视频中的每个单一视频图像进行人脸识别的多个标准执行任务,且对各视频图像进行人脸识别的标准执行任务又可以拆分成人脸检测、图像质量判断、活体检测以及数据库匹配识别等多个具有依赖关系的任务。
具体的,图像质量判断和活体检测需要依赖人脸检测的结果,也即,图像质量判断和活体检测分别与人脸检测具有依赖关系;同时,数据库匹配识别同时需要图像质量判断和活体检测的结果,也即,数据库匹配识别同时与图像质量判断和活体检测具有依赖关系。
步骤220、根据各任务的任务类型,确定与每个任务分别对应的目标函数,并将指向目标函数的函数指针对应添加至匹配的任务中。
在此步骤中,可以根据各任务的任务类型,确定与每个任务分别对应的任务执行函数,进而根据任务执行函数和目标函数之间的对应关系,得到与该任务对应的目标函数。例如,假设某任务的任务类型为人脸检测,则可以根据预设的人脸检测算法,确定与该任务对应的任务执行函数,然后得到与人脸检测任务对应的目标函数。
在上述多个具有依赖关系的任务中,至少一个任务的目标函数输入参数中包括其他任务的目标函数输出参数,输出参数为异步变量。
在确定出与每个任务分别对应的目标函数后,可以将指向目标函数的函数指针对应添加至匹配的任务中。这样设置的好处在于,可以根据任务中的函数指针快速定位匹配的目标函数,进而提高任务的调度执行效率。
步骤230、将各任务分配至匹配的任务池。
在本发明实施例一个实施方式中,每个任务池中包括任务队列,以及线程池,线程池中包括的线程数量与任务池对应的异步调度策略关联;所述任务队列用于存储分配至任务池中的任务,所述线程池中的线程用于调度任务至处理器执行匹配的目标函数;其中,异步调度策略包括:单线程调度策略和多线程调度策略,不同任务池对应的异步调度策略相同或者不同。
其中,如果任务池为等待同步执行的任务池,则该任务池对应的异步调度策略为单线程调度策略,也即,该任务池中线程池包括的线程数量为一个;如果任务池为等待异步执行的任务池,则该任务池对应的异步调度策略为多线程调度策略,也即,该任务池中线程池包括的线程数量可以为多个。
在本实施例中,单线程调度策略是指,利用单一线程从对应的任务队列中将满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数,并在该目标函数执行完成之后,再次利用所述单一线程从对应的任务队列中将下一个满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。
多线程调度策略是指,利用多个线程从对应的任务队列中将满足输入参数就绪条件的多个任务调度至处理器中,以执行匹配的目标函数。
在一个具体的实施例中,假设标准执行任务为对某个视频图像进行人脸识别,由于多个视频图像之间具有连续性,各视频图像对应的人脸检测任务需要同步执行,则可以将各视频图像对应的人脸检测任务分配至采用单线程调度策略的任务池中,如果各视频图像对应的活体检测任务需要异步执行,则可以将各视频图像对应的活体检测任务分配至采用多线程调度策略的任务池中。
步骤240、依次扫描目标任务池的任务队列中的各任务的目标函数输入参数。
在此步骤中,可以利用预设的代码扫描工具,依次扫描目标任务池的任务队列中的各任务的目标函数输入参数。
在本发明实施例的一个实施方式中,依次扫描目标任务池的任务队列中的各任务的输入参数,包括:在向所述目标任务池的任务队列分配新的任务时,依次扫描目标任务池的任务队列中的各任务的输入参数;或者在目标任务池的线程池中有线程完成对一个任务的调度执行时,依次扫描目标任务池的任务队列中的各任务的输入参数。
这样设置的好处在于,可以及时获取任务队列中满足输入参数就绪条件的任务,避免任务执行超时。
步骤250、如果当前扫描的目标任务的目标函数输入参数中存在其他任务的目标函数输出参数,则判断其他任务的目标函数输出参数的状态是否为就绪状态,若是,执行步骤260,若否,返回执行步骤240。
步骤260、使用所述目标任务池的线程池中的空闲线程将所述目标任务调度至处理器中,以执行匹配的目标函数。
在本实施例的一个实施方式中,如果当前扫描的目标任务的目标函数输入参数全部为立即数,则也可以使用所述目标任务池的线程池中的空闲线程将所述目标任务调度至处理器中,以执行匹配的目标函数。
在本实施例中,通过构建与各任务匹配的任务池,然后使用各任务池中线程池包括的空闲线程将各目标任务调度至处理器中,以执行匹配的目标函数的技术手段,无需开发者运用多线程开发技术,也不需要开发者注意多线程编程中的访问冲突以及超时处理等问题,由此可以降低开发者进行任务调度的执行难度,降低任务调度所消耗的时间成本。
本发明实施例提供的技术方案,通过在检测到有待处理的标准执行任务时,将标准执行任务拆分得到多个具有依赖关系的任务,并根据各任务的任务类型,确定与每个任务分别对应的目标函数,将指向目标函数的函数指针对应添加至匹配的任务中,然后将各任务分配至匹配的任务池,依次扫描目标任务池的任务队列中的各任务的目标函数输入参数,如果当前扫描的目标任务的目标函数输入参数中存在其他任务的目标函数输出参数,则判断其他任务的目标函数输出参数的状态是否为就绪状态,若是,则使用目标任务池的线程池中的空闲线程将目标任务调度至处理器中,以执行匹配的目标函数的技术手段,可以降低开发者进行任务调度执行的难度,提高多个任务的调度执行效率。
需要再次强调的是,本发明实施例的技术方案创造性的构建得到了一种异步框架,通过使用该异步框架,可以让不同的任务采用完全不同的异步调度策略,真正做到为不同任务设置不同的异步调度策略。尽可能让并行任务去并行执行,同时又满足某个或某几个中间任务只能同步执行的要求。
同时,该异步框架降低了对开发者的要求。开发者无需了解多线程编程的同步机制,也不需要注意多线程编程中的访问冲突、超时处理等。
此外,该异步框架为非侵入式异步框架。使用该异步框架,不需要对已有同步代码做结构调整,只需在现有的普通函数(任务执行函数)的基础上加上一个装饰器即可。其中,该装饰器可以支持任意类型,对使用者没有任何限制,改造现有产品时成本低,效率高。
图3为本发明又一实施例提供的任务调度方法的流程图,该方法包括:
步骤310,获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联。
步骤320,将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。
步骤330,响应于通过执行结果获取接口接收的执行结果获取请求,从所述执行结果获取请求中提取任务识别标识。
在本实施例中,开发者可以从预设的执行结果获取接口(例如get_value接口)发送执行结果获取请求,以获取特定任务的执行结果。其中,可选的,所述执行结果获取请求中可以包括任务识别标识,所述任务识别标识可以包括标准执行任务的任务标识,以及对标准执行任务拆分得到的具体任务的任务标识。其中,标准执行任务的任务标识,与标准执行任务拆分得到的具体任务的任务标识之间可以采用预设的分隔符进行隔开。
在接收到执行结果获取请求中,可以利用预设的分隔符从所述执行结果获取请求中提取任务识别标识。
步骤340,根据所述任务识别标识,定位识别任务,并获取与所述识别任务对应的目标函数输出参数。
在本实施例中,在将各任务分配至匹配的任务池后,可以设置与各任务对应的任务识别标识。其中,某一任务对应的任务识别标识中可以包括该任务的任务标识,以及该任务对应的标准执行任务的任务标识。在获取到开发者提交的任务识别标识之后,可以将该任务识别标识与各任务池中各任务对应的任务识别标识进行比较,根据比较结果定位识别任务,并获取与所述识别任务对应的目标函数输出参数。
步骤350,如果确定所述输出参数的状态为准备状态,则等待至所述输出参数的状态变更为就绪状态时,获取所述输出参数作为所述执行结果获取请求的结果响应。
在本实施例中,如果确定所述输出参数的状态为准备状态,则可以说明识别任务没有执行结束,并且需要等待识别任务执行完成后(即识别任务对应的目标函数输出参数的状态变更为就绪状态),获取识别任务对应的目标函数输出参数,并将此输出参数反馈作为执行结果获取请求的结果响应,反馈给开发者。
在本发明实施例中,在从所述执行结果获取请求中提取任务识别标识的同时,还包括:从所述执行结果获取请求中提取允许等待时长。
在本实施例中,为了保证输出结果的时效性,开发者还可以在执行结果获取请求中设置允许等待时长。
在本发明实施例的一个实施方式中,在等待至所述输出参数的状态变更为就绪状态时,获取所述输出参数作为所述执行结果获取请求的结果响应,具体包括:
步骤351,在所述允许等待时长内,如果检测到所述输出参数的状态变更为就绪状态时,则获取所述输出参数作为所述执行结果获取请求的结果响应。
步骤352,如果当前已等待时长超过所述允许等待时长,则将处理超时的提示信息作为所述执行结果获取请求的结果响应,并在各任务池的任务队列中逐级定位所述识别任务,以及所述识别任务前置依赖的全部任务。
在此步骤中,如果识别任务对应的目标函数输出参数的状态为准备状态,且当前已等待时长超过允许等待时长,则可以将处理超时的提示信息反馈给开发者,然后根据该识别任务与其他任务之间依赖关系,在各任务池的任务队列中逐级定位所述识别任务,以及所述识别任务前置依赖的全部任务。
在一个具体的实施例中,假设上述多个具有依赖关系的任务中包括任务A、任务B、任务C以及任务D。其中,任务B依赖任务A,任务C依赖任务B,如果任务C为所述识别任务,则可以在各任务池的任务队列中逐级定位任务C,以及任务C前置依赖的全部任务,即任务B与任务A。
步骤353,将定位到的各任务从所在任务池的任务列表中删除。
在本实施例中,如果当前已等待时长超过所述允许等待时长,即使识别任务对应的目标函数输出参数的状态变更为就绪状态,该输出参数的结果有效性也较差,因此可以将定位到的识别任务,以及识别任务前置依赖的全部任务在任务池的任务列表中删除,由此可以节省对有效性较差的任务执行时所消耗的资源。
本发明实施例提供的技术方案,通过获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联,然后将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数,最后响应于通过执行结果获取接口接收的执行结果获取请求,从执行结果获取请求中提取任务识别标识,并根据任务识别标识定位识别任务,获取与所述识别任务对应的目标函数输出参数,如果确定输出参数的状态为准备状态,则等待至输出参数的状态变更为就绪状态时,获取输出参数作为执行结果获取请求的结果响应的技术手段,可以降低开发者进行任务调度执行的难度,提高多个任务的调度执行效率。
图4为本发明另一实施例提供的一种任务的调度执行装置的结构示意图。如图4所示,该装置包括:任务获取模块410和任务分配模块420。其中,
任务获取模块410,用于获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联;
其中,目标函数为任务执行函数的装饰器,至少一个任务的目标函数输入参数中包括其他任务的目标函数输出参数,输出参数为异步变量,输出参数的状态包括任务执行函数执行后的就绪状态和任务执行函数执行前的准备状态;
任务分配模块420,用于将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。
本发明实施例提供的技术方案,通过获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联,将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数的技术手段,可以降低开发者进行任务调度的难度,提高多个任务的调度执行效率。
可选的,所述任务获取模块410,包括:
任务拆分单元,用于在检测到有待处理的标准执行任务时,将所述标准执行任务拆分得到多个具有依赖关系的任务;
目标函数确定单元,用于根据各任务的任务类型,确定与每个任务分别对应的目标函数,并将指向目标函数的函数指针对应添加至匹配的任务中。
可选的,每个任务池中包括任务队列,以及线程池,线程池中包括的线程数量与任务池对应的异步调度策略关联;
所述任务队列用于存储分配至任务池中的任务,所述线程池中的线程用于调度任务至处理器执行匹配的目标函数;
其中,异步调度策略包括:单线程调度策略和多线程调度策略,不同任务池对应的异步调度策略相同或者不同。
任务分配模块420,包括:
参数扫描单元,用于依次扫描目标任务池的任务队列中的各任务的目标函数输入参数;
状态判断单元,用于如果当前扫描的目标任务的目标函数输入参数中存在其他任务的目标函数输出参数,则判断其他任务的目标函数输出参数的状态是否为就绪状态;
调度单元,用于当前扫描的目标任务的目标函数输入参数中存在其他任务的目标函数输出参数的状态为就绪状态时,使用所述目标任务池的线程池中的空闲线程将所述目标任务调度至处理器中,以执行匹配的目标函数;
标识获取单元,用于响应于通过执行结果获取接口接收的执行结果获取请求,从所述执行结果获取请求中提取任务识别标识;
任务定位单元,用于根据所述任务识别标识,定位识别任务,并获取与所述识别任务对应的目标函数输出参数;
结果获取单元,用于如果确定所述输出参数的状态为准备状态,则等待至所述输出参数的状态变更为就绪状态时,获取所述输出参数作为所述执行结果获取请求的结果响应。
其中,可选的,参数扫描单元,包括:
输入参数扫描子单元,用于在向所述目标任务池的任务队列分配新的任务时,依次扫描目标任务池的任务队列中的各任务的输入参数;或者在目标任务池的线程池中有线程完成对一个任务的调度执行时,依次扫描目标任务池的任务队列中的各任务的输入参数;
标识获取单元,包括:
等待时长获取子单元,用于从所述执行结果获取请求中提取允许等待时长;
结果获取单元,包括:
输出参数获取子单元,用于在所述允许等待时长内,如果检测到所述输出参数的状态变更为就绪状态时,则获取所述输出参数作为所述执行结果获取请求的结果响应;
结果确定子单元,用于如果当前已等待时长超过所述允许等待时长,则将处理超时的提示信息作为所述执行结果获取请求的结果响应,并在各任务池的任务队列中逐级定位所述识别任务,以及所述识别任务前置依赖的全部任务;
任务删除子单元,用于将定位到的各任务从所在任务池的任务列表中删除。
上述装置可执行本发明前述所有实施例所提供的方法,具备执行上述方法相应的功能模块和有益效果。未在本发明实施例中详尽描述的技术细节,可参见本发明前述所有实施例所提供的方法。
图5为本发明另一实施例提供的一种计算机设备的结构示意图,如图5所示,该计算机设备包括处理器510、存储器520、输入装置530和输出装置540;计算机设备中处理器510的数量可以是一个或多个,图5中以一个处理器510为例;计算机设备中的处理器510、存储器520、输入装置530和输出装置540可以通过总线或其他方式连接,图5中以通过总线连接为例。存储器520作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明任意实施例中的一种任务的调度执行方法对应的计算机程序/模块(例如,一种任务的调度执行装置中的任务获取模块410和任务分配模块420)。处理器510通过运行存储在存储器520中的软件程序、计算机程序以及模块,从而执行计算机设备的各种功能应用以及数据处理,即实现上述的一种任务的调度执行方法。也即,该计算机程序被处理器执行时实现:
获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联;
其中,目标函数为任务执行函数的装饰器,至少一个任务的目标函数输入参数中包括其他任务的目标函数输出参数,输出参数为异步变量,输出参数的状态包括任务执行函数执行后的就绪状态和任务执行函数执行前的准备状态;
将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。
存储器520可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器520可进一步包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至计算机设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。输入装置530可用于接收输入的数字或字符信息,以及产生与计算机设备的用户设置以及功能控制有关的键信号输入,可以包括键盘和鼠标等。输出装置540可包括显示屏等显示设备。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明任意实施例所述方法。当然,本发明实施例所提供的一种计算机可读存储介质,其可以执行本发明任意实施例所提供的一种任务的调度执行方法中的相关操作。也即,该计算机程序被处理器执行时实现:
获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联;
其中,目标函数为任务执行函数的装饰器,至少一个任务的目标函数输入参数中包括其他任务的目标函数输出参数,输出参数为异步变量,输出参数的状态包括任务执行函数执行后的就绪状态和任务执行函数执行前的准备状态;
将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
值得注意的是,上述一种任务的调度执行装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种任务的调度执行方法,其特征在于,包括:
获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联;
其中,目标函数为任务执行函数的装饰器,至少一个任务的目标函数输入参数中包括其他任务的目标函数输出参数,输出参数为异步变量,输出参数的状态包括任务执行函数执行后的就绪状态和任务执行函数执行前的准备状态;
将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。
2.根据权利要求1所述的方法,其特征在于,获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联,包括:
在检测到有待处理的标准执行任务时,将所述标准执行任务拆分得到多个具有依赖关系的任务;
根据各任务的任务类型,确定与每个任务分别对应的目标函数,并将指向目标函数的函数指针对应添加至匹配的任务中。
3.根据权利要求2所述的方法,其特征在于,每个任务池中包括任务队列,以及线程池,线程池中包括的线程数量与任务池对应的异步调度策略关联;
所述任务队列用于存储分配至任务池中的任务,所述线程池中的线程用于调度任务至处理器执行匹配的目标函数;
其中,异步调度策略包括:单线程调度策略和多线程调度策略,不同任务池对应的异步调度策略相同或者不同。
4.根据权利要求3所述的方法,其特征在于,采用与任务池对应的异步调度策略,将任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数,包括:
依次扫描目标任务池的任务队列中的各任务的目标函数输入参数;
如果当前扫描的目标任务的目标函数输入参数中存在其他任务的目标函数输出参数,则判断其他任务的目标函数输出参数的状态是否为就绪状态;
若是,则使用所述目标任务池的线程池中的空闲线程将所述目标任务调度至处理器中,以执行匹配的目标函数。
5.根据权利要求4所述的方法,其特征在于,依次扫描目标任务池的任务队列中的各任务的目标函数输入参数,包括:
在向所述目标任务池的任务队列分配新的任务时,依次扫描目标任务池的任务队列中的各任务的目标函数输入参数;或者
在目标任务池的线程池中有线程完成对一个任务的调度执行时,依次扫描目标任务池的任务队列中的各任务的目标函数输入参数。
6.根据权利要求1-5任一项所述的方法,其特征在于,还包括:
响应于通过执行结果获取接口接收的执行结果获取请求,从所述执行结果获取请求中提取任务识别标识;
根据所述任务识别标识,定位识别任务,并获取与所述识别任务对应的目标函数输出参数;
如果确定所述输出参数的状态为准备状态,则等待至所述输出参数的状态变更为就绪状态时,获取所述输出参数作为所述执行结果获取请求的结果响应。
7.根据权利要求6所述的方法,其特征在于,在从所述执行结果获取请求中提取任务识别标识的同时,还包括:
从所述执行结果获取请求中提取允许等待时长;
在等待至所述输出参数的状态变更为就绪状态时,获取所述输出参数作为所述执行结果获取请求的结果响应,具体包括:
在所述允许等待时长内,如果检测到所述输出参数的状态变更为就绪状态时,则获取所述输出参数作为所述执行结果获取请求的结果响应;
如果当前已等待时长超过所述允许等待时长,则将处理超时的提示信息作为所述执行结果获取请求的结果响应,并在各任务池的任务队列中逐级定位所述识别任务,以及所述识别任务前置依赖的全部任务;
将定位到的各任务从所在任务池的任务列表中删除。
8.一种任务的调度执行装置,其特征在于,包括:
任务获取模块,用于获取多个具有依赖关系的任务,并将各任务与匹配的目标函数关联;
其中,目标函数为任务执行函数的装饰器,至少一个任务的目标函数输入参数中包括其他任务的目标函数输出参数,输出参数为异步变量,输出参数的状态包括任务执行函数执行后的就绪状态和任务执行函数执行前的准备状态;
任务分配模块,用于将各任务分配至匹配的任务池,并采用与任务池对应的异步调度策略,将各任务池中满足输入参数就绪条件的任务调度至处理器中,以执行匹配的目标函数。
9.一种计算机设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个计算机程序;
当所述一个或多个计算机程序被所述一个或多个处理器执行,使得所述一个或多个处理器执行所述计算机程序时实现如权利要求1-7中任一所述的任务的调度执行方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-7中任一所述的任务的调度执行方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110837725.6A CN113485810A (zh) | 2021-07-23 | 2021-07-23 | 一种任务的调度执行方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110837725.6A CN113485810A (zh) | 2021-07-23 | 2021-07-23 | 一种任务的调度执行方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113485810A true CN113485810A (zh) | 2021-10-08 |
Family
ID=77942355
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110837725.6A Pending CN113485810A (zh) | 2021-07-23 | 2021-07-23 | 一种任务的调度执行方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113485810A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115967641A (zh) * | 2023-03-16 | 2023-04-14 | 浙江正泰仪器仪表有限责任公司 | 一种批量设备参数操作的方法、装置、计算机设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108897610A (zh) * | 2018-06-15 | 2018-11-27 | 上海陆家嘴国际金融资产交易市场股份有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN110096345A (zh) * | 2019-03-16 | 2019-08-06 | 平安科技(深圳)有限公司 | 智能任务调度方法、装置、设备及存储介质 |
US20200110634A1 (en) * | 2017-05-29 | 2020-04-09 | Barcelona Supercomputing Center - Centro Nacional De Supercomputacion | Managing Task Dependency |
CN111444223A (zh) * | 2020-03-11 | 2020-07-24 | 中国平安人寿保险股份有限公司 | 基于异步装饰器的双缓存方法、装置、设备及存储介质 |
-
2021
- 2021-07-23 CN CN202110837725.6A patent/CN113485810A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200110634A1 (en) * | 2017-05-29 | 2020-04-09 | Barcelona Supercomputing Center - Centro Nacional De Supercomputacion | Managing Task Dependency |
CN108897610A (zh) * | 2018-06-15 | 2018-11-27 | 上海陆家嘴国际金融资产交易市场股份有限公司 | 任务调度方法、装置、计算机设备和存储介质 |
CN110096345A (zh) * | 2019-03-16 | 2019-08-06 | 平安科技(深圳)有限公司 | 智能任务调度方法、装置、设备及存储介质 |
CN111444223A (zh) * | 2020-03-11 | 2020-07-24 | 中国平安人寿保险股份有限公司 | 基于异步装饰器的双缓存方法、装置、设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
潘勇 等: "基于CPN的μC/OS系统实时性能分析", 计算机工程与设计, no. 08, 28 April 2009 (2009-04-28) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115967641A (zh) * | 2023-03-16 | 2023-04-14 | 浙江正泰仪器仪表有限责任公司 | 一种批量设备参数操作的方法、装置、计算机设备及介质 |
CN115967641B (zh) * | 2023-03-16 | 2023-05-30 | 浙江正泰仪器仪表有限责任公司 | 一种批量设备参数操作的方法、装置、计算机设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113535367B (zh) | 任务调度方法及相关装置 | |
WO2021159638A1 (zh) | 集群队列资源的调度方法、装置、设备及存储介质 | |
US20100064293A1 (en) | Apparatus and method for managing user schedule | |
CN110187958B (zh) | 一种任务处理方法、装置、系统、设备及存储介质 | |
CN106557369A (zh) | 一种多线程的管理方法及系统 | |
CN106775948B (zh) | 一种基于优先级的云任务调度方法及装置 | |
CN110806928A (zh) | 一种作业提交方法及系统 | |
Zhong et al. | Speeding up Paulson’s procedure for large-scale problems using parallel computing | |
CN115168013A (zh) | 一种任务运行系统、方法及计算设备 | |
CN114637536A (zh) | 任务处理方法、计算协处理器、芯片及计算机设备 | |
CN113225269A (zh) | 基于容器的工作流调度方法、装置、系统及存储介质 | |
CN111158875B (zh) | 基于多模块的多任务处理方法、装置及系统 | |
CN111381946B (zh) | 任务处理方法、装置及相关产品 | |
CN104598311A (zh) | 一种面向Hadoop的实时作业公平调度的方法和装置 | |
CN115756822A (zh) | 高性能计算应用性能调优的方法及系统 | |
CN113391911B (zh) | 一种大数据资源动态调度方法、装置和设备 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN113626173B (zh) | 调度方法、装置及存储介质 | |
CN113485810A (zh) | 一种任务的调度执行方法、装置、设备及存储介质 | |
CN114816709A (zh) | 任务调度方法、装置、服务器及可读存储介质 | |
CN112395062A (zh) | 任务处理方法、装置、设备及计算机可读存储介质 | |
CN114691376A (zh) | 一种线程执行方法、装置、电子设备和存储介质 | |
CN113722091A (zh) | 一种仿真任务部署方法、系统及相关装置 | |
CN114756375A (zh) | Gpu资源调度方法、系统、电子设备和存储介质 | |
CN112181517A (zh) | 一种应用软件的启动方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |