CN117331674A - 任务调度执行方法、电子设备和计算机可读存储介质 - Google Patents

任务调度执行方法、电子设备和计算机可读存储介质 Download PDF

Info

Publication number
CN117331674A
CN117331674A CN202311508019.2A CN202311508019A CN117331674A CN 117331674 A CN117331674 A CN 117331674A CN 202311508019 A CN202311508019 A CN 202311508019A CN 117331674 A CN117331674 A CN 117331674A
Authority
CN
China
Prior art keywords
task
group
execution
tasks
determining
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
Application number
CN202311508019.2A
Other languages
English (en)
Inventor
杨鑫宇
郑志强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seashell Housing Beijing Technology Co Ltd
Original Assignee
Seashell Housing Beijing Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Seashell Housing Beijing Technology Co Ltd filed Critical Seashell Housing Beijing Technology Co Ltd
Priority to CN202311508019.2A priority Critical patent/CN117331674A/zh
Publication of CN117331674A publication Critical patent/CN117331674A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开实施例公开了一种任务调度执行方法、电子设备和计算机可读存储介质,其中,方法包括:从任务数据库中获得待执行的任务集合;其中,所述任务集合包括多个任务以及所述多个任务中的每个任务对应的关联信息;所述关联信息表示所述任务与至少一个任务存在关联关系或不存在关联关系;基于每个所述任务的关联信息对所述任务集合进行分组处理,得到至少一组任务组;每组所述任务组中包括至少一个互相存在关联关系的任务;分别对所述至少一组任务组中每组任务组进行执行,实现所述任务集合的执行;本实施例提升了任务执行的效率的同时,解决了不同场景的任务调度,可适用于对多种场景下的多个任务的调度。

Description

任务调度执行方法、电子设备和计算机可读存储介质
技术领域
本公开涉及互联网技术,尤其是一种任务调度执行方法、电子设备和计算机可读存储介质。
背景技术
随着计算机技术的发展,在计算机运行的过程中存在着调度多个任务执行的情形,合理的安排多个任务的执行顺序,有利于缩减任务的执行时间,提高执行任务的效率。
现有技术中,通常通过基于任务优先级的先来先调度方案,比如操作系统内的线程调度时使用基于任务优先级的先来先调度方案,车间工件在生产线的调度时使用基于任务优先级的先来先调度方案等。基于任务优先级的先来先调度方案具有执行简单的优点,但是在较为复杂的业务场景下,由于待调度任务的属性比较丰富,例如,待调度任务除了包括任务优先级的属性,还包括任务最长执行时间、任务最晚结束时间等属性,仅按照优先级进行任务调度存在着任务执行延迟率高的问题,容易降低任务的执行效率。
发明内容
为了解决上述技术问题,提出了本公开。本公开的实施例提供了一种任务调度执行方法、电子设备和计算机可读存储介质。
根据本公开实施例的一个方面,提供了一种任务调度执行方法,包括:
从任务数据库中获得待执行的任务集合;其中,所述任务集合包括多个任务以及所述多个任务中的每个任务对应的关联信息;所述关联信息表示所述任务与至少一个任务存在关联关系或不存在关联关系;
基于每个所述任务的关联信息对所述任务集合进行分组处理,得到至少一组任务组;每组所述任务组中包括至少一个互相存在关联关系的任务;
分别对所述至少一组任务组中每组任务组进行执行,实现所述任务集合的执行。
可选地,所述基于每个所述任务的关联信息对所述任务集合进行分组处理,得到至少一个任务组,包括:
以每个所述任务为节点,存在关联关系的所述任务之间形成边,确定所述任务集合对应的至少一个图;
利用并查集算法对所述至少一个图执行分组处理,得到所述至少一个任务组;每个所述任务组对应一个有向无环图。
可选地,所述分别对所述至少一组任务组中每组任务组进行执行,包括:
确定每组所述任务组对应的组权重值,基于所述组权重值确定所述至少一个任务组的执行顺序;
按照所述执行顺序分别对所述至少一个任务组中每个任务组进行执行。
可选地,所述确定每组所述任务组对应的组权重值,包括:
确定每组所述任务组中包括至少一个任务中每个任务对应的权重值;
基于每组所述任务组中每个任务对应的权重值,以及所述任务组中包括的任务数量,确定所述任务组对应的所述组权重值。
可选地,所述任务组的数量为第一数量;
所述分别对所述至少一组任务组中每组任务组进行执行,包括:
基于所述第一数量,确定对应的第一数量的线程或第一数量的执行设备;
基于所述第一数量的线程分别对每组所述任务组中包括的至少一个任务进行执行;或者,
基于所述第一数量的执行设备分别对每组所述任务组中包括的至少一个任务进行执行。
可选地,所述分别对所述至少一组任务组中每组任务组进行执行,包括:
针对每组所述任务组,利用拓扑排序算法,确定所述任务组中至少一个任务的排序,得到所述任务组对应的至少一条执行路径;
按照所述至少一条执行路径,对所述任务组中的至少一个任务进行执行。
可选地,所述利用拓扑排序算法,确定所述任务组中至少一个任务的排序,得到所述任务组对应的至少一条执行路径,包括:
确定所述至少一个任务中每个任务对应的节点的入度;其中,每个所述任务在所述任务组对应的图中对应一个节点;
按照所述入度的大小对所述至少一个任务进行排序,得到所述任务组对应的至少一条执行路径。
可选地,所述按照所述入度的大小对所述至少一个任务进行排序,得到所述任务组对应的至少一条执行路径,包括:
按照所述入度从小到大对所述至少一个任务进行排序,得到一个序列;
利用贪心算法,确定所述序列中入度相同的至少一个任务之间的排序,将所述序列分解为至少一条执行路径。
根据本公开实施例的另一方面,提供了一种任务调度执行装置,包括:
任务获得模块,用于从任务数据库中获得待执行的任务集合;其中,所述任务集合包括多个任务以及所述多个任务中的每个任务对应的关联信息;所述关联信息表示所述任务与至少一个任务存在关联关系或不存在关联关系;
任务分组模块,用于基于每个所述任务的关联信息对所述任务集合进行分组处理,得到至少一组任务组;每组所述任务组中包括至少一个互相存在关联关系的任务;
任务执行模块,用于分别对所述至少一组任务组中每组任务组进行执行,实现所述任务集合的执行。
可选地,所述任务分组模块,具体用于以每个所述任务为节点,存在关联关系的所述任务之间形成边,确定所述任务集合对应的至少一个图;利用并查集算法对所述至少一个图执行分组处理,得到所述至少一个任务组;每个所述任务组对应一个有向无环图。
可选地,所述任务执行模块,包括:
权重确定单元,用于确定每组所述任务组对应的组权重值,基于所述组权重值确定所述至少一个任务组的执行顺序;
顺序执行单元,用于按照所述执行顺序分别对所述至少一个任务组中每个任务组进行执行。
可选地,权重确定单元,具体用于确定每组所述任务组中包括至少一个任务中每个任务对应的权重值;基于每组所述任务组中每个任务对应的权重值,以及所述任务组中包括的任务数量,确定所述任务组对应的所述组权重值。
可选地,所述任务组的数量为第一数量;所述任务执行模块,包括:
设备确定单元,用于基于所述第一数量,确定对应的第一数量的线程或第一数量的执行设备;
分布执行单元,用于基于所述第一数量的线程分别对每组所述任务组中包括的至少一个任务进行执行;或者,基于所述第一数量的执行设备分别对每组所述任务组中包括的至少一个任务进行执行。
可选地,所述任务执行模块,包括:
组内排序单元,用于针对每组所述任务组,利用拓扑排序算法,确定所述任务组中至少一个任务的排序,得到所述任务组对应的至少一条执行路径;
组内执行单元,用于按照所述至少一条执行路径,对所述任务组中的至少一个任务进行执行。
可选地,所述组内排序单元,具体用于确定所述至少一个任务中每个任务对应的节点的入度;其中,每个所述任务在所述任务组对应的图中对应一个节点;按照所述入度的大小对所述至少一个任务进行排序,得到所述任务组对应的至少一条执行路径。
可选地,所述组内排序单元在按照所述入度的大小对所述至少一个任务进行排序,得到所述任务组对应的至少一条执行路径时,用于按照所述入度从小到大对所述至少一个任务进行排序,得到一个序列;利用贪心算法,确定所述序列中入度相同的至少一个任务之间的排序,将所述序列分解为至少一条执行路径。
根据本公开实施例的又一方面,提供了一种电子设备,包括:
存储器,用于存储计算机程序产品;
处理器,用于执行所述存储器中存储的计算机程序产品,且所述计算机程序产品被执行时,实现上述任一实施例所述的任务调度执行方法。
根据本公开实施例的还一方面,提供了一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时,实现上述任一实施例所述的任务调度执行方法。
根据本公开实施例的再一方面,提供了一种计算机程序产品,包括计算机程序指令,该计算机程序指令被处理器执行时实现上述任一实施例所述的任务调度执行方法。
基于本公开上述实施例提供的一种任务调度执行方法、电子设备和计算机可读存储介质,其中,方法包括:从任务数据库中获得待执行的任务集合;其中,所述任务集合包括多个任务以及所述多个任务中的每个任务对应的关联信息;所述关联信息表示所述任务与至少一个任务存在关联关系或不存在关联关系;基于每个所述任务的关联信息对所述任务集合进行分组处理,得到至少一组任务组;每组所述任务组中包括至少一个互相存在关联关系的任务;分别对所述至少一组任务组中每组任务组进行执行,实现所述任务集合的执行;本实施例通过分组并分别对至少一组任务组进行执行,提升了任务执行的效率的同时,解决了不同场景的任务调度,可适用于对多种场景下的多个任务的调度。
下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同描述一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开,其中:
图1是本公开一示例性实施例提供的任务调度执行方法的流程示意图;
图2是本公开图1所示的实施例中步骤104的一个流程示意图;
图3是本公开一示例性实施例提供的任务调度执行方法对任务集合分组后得到的两个有向无环图;
图4是本公开图1所示的实施例中步骤106的一个流程示意图;
图5是本公开图1所示的实施例中步骤106的另一个流程示意图;
图6是本公开图1所示的实施例中步骤106的又一个流程示意图;
图7是本公开一示例性实施例提供的任务调度执行方法中一可选示例中节点排序示意图;
图8是本公开一示例性实施例提供的任务调度执行装置的结构示意图;
图9图示了根据本公开实施例的电子设备的框图。
具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。本公开中所指数据可以包括文本、图像、视频等非结构化数据,也可以是结构化数据。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机系统、服务器等电子设备,其可与众多其它通用或专用计算系统环境或配置一起操作。适于与终端设备、计算机系统、服务器等电子设备一起使用的众所周知的终端设备、计算系统、环境和/或配置的例子包括但不限于:个人计算机系统、服务器计算机系统、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的系统、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机系统、大型计算机系统和包括上述任何系统的分布式云计算技术环境,等等。
终端设备、计算机系统、服务器等电子设备可以在由计算机系统执行的计算机系统可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机系统/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算系统存储介质上。
示例性方法
图1是本公开一示例性实施例提供的任务调度执行方法的流程示意图。本实施例可应用在电子设备上,如图1所示,包括如下步骤:
步骤102,从任务数据库中获得待执行的任务集合。
其中,任务集合包括多个任务以及多个任务中的每个任务对应的关联信息。关联信息表示任务与至少一个任务存在关联关系或不存在关联关系。
可选地,任务集合中多个任务可以是对应多种场景的,这些场景相互独立。例如,装修场景(可以包括:量房、方案制定、分配设计师、具体施工、保洁等),买房场景(可以包括:线上沟通、预约、线下看房、支付定金、签订合同、付款、交房等),复杂数据计算(可包括多个数据计算步骤等)等等。可选地,对应相同场景的多个任务之间可能存在关联关系,也可能不存在关联关系。通常情况下不同场景中的任务之间不存在关联关系,例如,一个任务a2=任务a3+任务a4+任务a5,那么任务a2就与任务a3、任务a4、任务a5存在关联关系,并且必须在任务a3、任务a4、任务a5之后执行。可选地,一个任务对应的关联关系表示该任务与其他任务之间的关联关系;而当一个任务的关联信息表明该任务与任务集合中所有其他任务均不存在关联关系时,对该任务单独分组。
步骤104,基于每个任务的关联信息对任务集合进行分组处理,得到至少一组任务组。
每组任务组中包括至少一个互相存在关联关系的任务。
在一实施例中,通过关联关系将任务集合中包括的多个任务进行分组,将存在关联关系的至少一个任务分配到一个组中。即,每个任务组中只包括互相存在关联关系的任务。可选地,可基于每个任务组构建一个有向无环图,图中每个任务对应一个节点,每个关联关系对应一条边,通过图更直观的表明任务之间关联关系,进而确定任务组中各个任务的执行顺序,基于任务组对应的执行顺序对任务进行执行,实现了任务调度。
步骤106,分别对至少一组任务组中每组任务组进行执行,实现任务集合的执行。
可选地,由于至少一组任务组之间相互独立,因此,可以分布式的执行至少一个任务组,以提高任务集合执行的效率。例如,可以为每个任务组分配一个执行设备或一个进程,通过不同设备或进程同时对至少一组任务组进行执行;大大压缩了任务集合执行的时间;或者按照不同任务的重要程度以及优先级对不同任务组先后执行,同样大大提高了任务执行的效率。
本公开上述实施例提供的一种任务调度执行方法,包括:从任务数据库中获得待执行的任务集合;其中,所述任务集合包括多个任务以及所述多个任务中的每个任务对应的关联信息;所述关联信息表示所述任务与至少一个任务存在关联关系或不存在关联关系;基于每个所述任务的关联信息对所述任务集合进行分组处理,得到至少一组任务组;每组所述任务组中包括至少一个互相存在关联关系的任务;分别对所述至少一组任务组中每组任务组进行执行,实现所述任务集合的执行;本实施例通过分组并分别对至少一组任务组进行执行,提升了任务执行的效率的同时,解决了不同场景的任务调度,可适用于对多种场景下的多个任务的调度。
本实施例通过的方法在解决了任务调度顺序解析问题,以及任务执行效率问题的同时,还解决了不同场景下的任务调度策略问题,并保证了该方法在多场景下的通用性。
如图2所示,在上述图1所示实施例的基础上,步骤104可包括如下步骤:
步骤1041,以每个任务为节点,存在关联关系的任务之间形成边,确定任务集合对应的至少一个图。
如果分组并行执行多个任务,最理想的情况下就是,每个任务分为一组,此时对于包括n个任务的任务集合,可以n个任务(每个任务执行耗时为t imeN)同时执行,此时执行任务的耗时为t imeN(当每个任务的执行时长不同时,可以为n个任务中耗时最长的时间)。但某些情况下,任务之间存在关联关系(例如,依赖关系等),比如任务2需要任务1执行完毕后去执行,此时需要对任务进行分组。如果分组后每组任务组中的至少一个任务串行执行,其中最大的一组任务的数量为m(m<=n),不考虑一些系统计算耗时,此时执行耗时为m*timeN,此时实现效率初步提升。
步骤1042,利用并查集算法对至少一个图执行分组处理,得到至少一个任务组。
可选地,每个任务组对应一个有向无环图。例如,如图3所示,为分组得到的两个任务组对应的两个有向无环图,其中,一个有向无环图中包括任务A、任务B、任务C、任务D和任务E,其中通过边表示任务E在任务A之后执行,任务D在任务C之后执行,任务B在任务E和任务D之后执行;另一个有向无环图中包括任务F、任务G、任务H、任务I和任务J,其中通过边表示任务H在任务F之后执行,任务J在任务H、任务I和任务G之后执行。
为了实现任务执行效率的提升以及根据不同优先级调度策略的制定,需要根据任务的依赖关系进行分组。本实施例通过任务的关联关系生成图结果,每个关联关系作为图中的一条边,然后通过并查集算法,将所有联通的节点分为一组,得到至少一个任务组。
其中,并查集算法是一种用于处理集合合并及查询问题的数据结构。它主要通过数组来表示每一个集合,其中每个节点的值表示该节点的父节点,根节点的父节点为-1。
并查集算法的核心操作是查找(Find)和合并(Union),Find用于查询某一元素所在的集合,Union用于将两个集合进行合并。其计算方式如下:
查找操作Find(x):
(1)如果x是根节点,则返回x;
(2)否则返回Find(parent[x])。
合并操作Union(x,y):
(1)首先分别找到x和y的根节点root1和root2;
(2)如果root1和root2相等,则不需要进行合并;
(3)否则,将root1的父节点设置为root2,即parent[root1]=root2。
这样,合并操作后,x所在的集合和y所在的集合就合并成了一个集合。并查集算法的时间复杂度一般是O(jα(i)),其中i是元素个数,j是操作数,α是Ackermann函数的反函数,α(i)的值在实际应用中不会超过5。
如图4所示,在上述图1所示实施例的基础上,一些可选的实施例中,步骤106可包括如下步骤:
步骤1061,确定每组任务组对应的组权重值,基于组权重值确定至少一个任务组的执行顺序。
可按照组权重值的大小对任务组进行排序,例如,按照组权重值从大到小的顺序对任务组进行排序,得到执行顺序,实现将组权重值较大的任务组先执行,实现任务调度的同时,满足优先级较高的任务先执行的条件。
可选地,组权重值的确定可包括:确定每组任务组中包括至少一个任务中每个任务对应的权重值;基于每组任务组中每个任务对应的权重值,以及任务组中包括的任务数量,确定任务组对应的组权重值。
本实施例中,由于任务调度中的任务存在不同的重要程度和优先级,可根据不同的重要程度和/或优先级确定每个任务对应的权重值,可选地,重要程度越高,权重值越大,优先级越高,权重值越大,具体的权重值取值可根据具体应用场景进行设置,只需在同一任务集合中同一权重值设置标准即可。根据每组任务组中每个任务的权重值以及包括的节点个数,计算该组任务执行的权值;可选地,计算方法可以为累加每个任务的权重值,以累加和作为组权重值;还可以为对任务组中包括的多个任务的多个权重值求平均,以平均值作为组权重值;还可以根据任务触发时间为不同任务组分配组权重值,例如,触发时间越早的权重值越大;还可以根据外部输入确定等等,本实施例仅列举个别确定组权重值的例子以便于理解,并不用于限制组权重值的具体确定方法,其他现有技术中确定权重值的方法也可应用到本实施例中。
步骤1062,按照执行顺序分别对至少一个任务组中每个任务组进行执行。
分组后,分组后的数据会根据各任务组中包括的任务的权重值和调度策略来确定任务组的组权重值,用于节点分配和资源抢占。每组任务组中的任务都可以单独执行,根据每组任务组对应的组权重值,将任务组按照已有的调度策略(按照组权重值排序等)或自定义的策略,将任务分配到不同的执行设备(例如,计算器等)或者线程上,提升了任务执行的效率。
如图5所示,在上述图1所示实施例的基础上,另一些可选的实施例中,任务组的数量为第一数量;步骤106可包括如下步骤:
步骤1063,基于第一数量,确定对应的第一数量的线程或第一数量的执行设备。
步骤1064,基于第一数量的线程分别对每组任务组中包括的至少一个任务进行执行;或者,基于第一数量的执行设备分别对每组任务组中包括的至少一个任务进行执行。
本实施例中,由于至少一个任务组之间相互独立,因此,当存在足够数量的执行设备或线程时,同时执行所有任务组可以实现将任务执行效率得到极大提升,本实施例通过将每个任务组分配到一个执行设备或线程中,实现任务组的分布式执行,相对于按照一定顺序执行多个任务组的技术方案,本实施例的任务执行效果更高,最终任务集合完成执行的时间为多个任务组中的执行时间最长的任务组对应的执行时间。
如图6所示,在上述图1所示实施例的基础上,又一些可选的实施例中,针对每组任务组,步骤106可包括如下步骤:
步骤1065,利用拓扑排序算法,确定任务组中至少一个任务的排序,得到任务组对应的至少一条执行路径。
在通过并查集算法实现任务分组后,得到了至少一组任务组,并且任务执行时间得到降低。其中每组任务组中各个任务间都存在关联关系,此时根据其关联关系,得到一个有向无环图,此时,任务组中至少一个任务的执行顺序可以通过拓扑排序算法解析获得。
步骤1066,按照至少一条执行路径,对任务组中的至少一个任务进行执行。
本实施例中,对于每组任务组中的任务确定至少一条执行路径,按照执行路径对至少一个任务进行执行,实现了对任务组中任务的调度,按照调度对至少一个任务进行执行,保证了任务正确执行。本实施例采用拓扑排序算法,解决了任务调度中的调度顺序解析问题,确定了任务调度的先后顺序。
其中,拓扑排序算法是一种用于解决有向无环图(DAG)的线性排序问题的算法,其基本思想是将图中的所有节点按照先后顺序进行一次排序,使得任何一条有向边的起点排在终点的前面。这个排序结果可以用来解决很多实际问题,例如任务调度、依赖解决、课程安排等问题。拓扑排序算法的计算方式如下:
1.首先,对于图中的任意一个节点,如果它没有入度(入度为0说明该节点为起点),则将它加入到拓扑排序的结果集中。
2.然后,将该节点从有向无环图中删除,并将该节点所连出去的所有边的终点节点的入度减一。
3.重复执行步骤1和2,直到图中所有节点都被加入到拓扑排序的结果集中,完成任务排序。
拓扑排序算法的时间复杂度是O(p+q),其中p是节点数,q是边数。
在一些可选的实施例中,步骤1065可以包括:
确定至少一个任务中每个任务对应的节点的入度;其中,每个任务在任务组对应的图中对应一个节点;
按照入度的大小对至少一个任务进行排序,得到任务组对应的至少一条执行路径。
以图7所示的场景为例,通过拓扑排序,可以获得其执行顺序,但串行执行时,其执行时间为排序时间+所有节点任务执行时间,图7中按照节点1、节点2、节点4、节点3、节点5的顺序执行,排序时间往往可以忽略不计,此时该任务组的执行时间为5个节点执行时间之和。然而,根据图7,发明人发现如果入度为0的节点可以同时执行,可以进一步将任务执行时间缩短,因此,提出通过贪心算法对其进行优化。可选地,按照入度的大小对至少一个任务进行排序,得到任务组对应的至少一条执行路径,包括:
按照入度从小到大对至少一个任务进行排序,得到一个序列;
利用贪心算法,确定序列中入度相同的至少一个任务之间的排序,将序列分解为至少一条执行路径。
其中,贪心算法是一种重要的算法思想,其特点是每一步都采取当前状态下最优的选择,从而得出全局最优解。贪心算法的计算方式如下:
1.确定问题的最优子结构性质,即问题的最优解可以通过一系列局部最优状态的选择得到。
2.构造贪心选择,即在某个状态下,可以做出局部最优的选择,使得问题可转化为一个规模更小的子问题。
3.确定是否能够证明贪心选择在每一步的局部最优选择能够导致全局最优解,如不能则需要调整贪心选择,重新构造贪心算法。
4.反复地进行贪心选择和局部最优解的求解,直到达到全局最优解。
对于拓扑排序问题,通过贪心算法执行,当任一节点入度为0时,就即刻执行该节点对应的任务,例如,图7中任务1、2、3可同时执行;此时执行时间为所有路径中最长路径对应的执行时间,例如,图7中任务1-4-5或任务2-4-5的路径对应的执行时间。本实施例通过贪心算法,将任务组中的任务执行时间进一步缩减,此时,任务集合的执行时间为所有任务组中包括的最长的一条路径对应的多个任务的执行时长之和。
由于任务调度中的任务执行往往是串行或是简单并发,可能会导致任务执行效率降低、浪费大量的时间。本实施例采用并查集算法将任务分组,分组可以保证整组任务单独完成,此时通过消息分配或者多线程,可以实现初步的效率提升。采用贪心算法以及多线程,在保证任务调度合理的前提下,进一步提高计算机资源利用率,提高了任务执行效率。
此时计算方式如下:
1.首先,根据依赖关系制作有向无环图。
2.对于图中的任意一个节点,如果它没有入度,执行其相应任务。
3.节点任务执行完毕后,对其节点所连出去的所有边的终点节点的入度减一,对所有边的终点节点重新进行一次步骤2的判断并在完毕后执行步骤3。
4.待所有可执行节点执行完毕后,如果存在未执行节点,说明图中有环,报错并反馈,丢弃任务集合,重新接收任务集合进行新的调度。如果不存在未执行节点,说明所有任务执行完毕。
本公开提供的一个可选示例可包括如下步骤:
1.通过工厂模式和/或策略模式,生成任务并保存。其中,工厂模式为将所有需要执行的任务进行收集,得到任务并保存到任务数据库中;而策略模式可以为任意预设策略或人为策略,根据策略将场景中的不同步骤确定为任务,得到任务并保存到任务数据库中。
2.从任务数据库中确定需要执行的待执行任务集合,根据依赖关系绘制连通图。
3.根据连通图,通过并查集算法对任务进行分组,并通过所需的调度策略计算每组任务组的组权重值,确定任务组的执行顺序。
4.根据每组任务组的组权重值和调度策略,分配该组任务组的执行设备或线程。
5.对于每组任务组内部的任务执行,根据每组任务组绘制有向无环图,根据拓扑排序的方式,确定任务组内多个任务的执行顺序。
6,按照执行顺对任务组内的任务进行执行,返回各组任务组的执行结果。
其中,当线程阻塞时,可以根据多线程调度策略控制执行顺序。
本实施例中,通过并查集、拓扑排序和贪心算法实现了任务调度,解决了任务调度中存在的先后顺序执行任务的调度顺序解析问题,并极大程度缩短了任务执行时间。
本公开实施例提供的任一种任务调度执行方法可以由任意适当的具有数据处理能力的设备执行,包括但不限于:终端设备和服务器等。或者,本公开实施例提供的任一种任务调度执行方法可以由处理器执行,如处理器通过调用存储器存储的相应指令来执行本公开实施例提及的任一种任务调度执行方法。下文不再赘述。
示例性装置
图8是本公开一示例性实施例提供的任务调度执行装置的结构示意图。如图8所示,本实施例提供的装置包括:
任务获得模块81,用于从任务数据库中获得待执行的任务集。
其中,任务集合包括多个任务以及多个任务中的每个任务对应的关联信息;关联信息表示任务与至少一个任务存在关联关系或不存在关联关系;
任务分组模块82,用于基于每个任务的关联信息对任务集合进行分组处理,得到至少一组任务组。
每组任务组中包括至少一个互相存在关联关系的任务。
任务执行模块83,用于分别对至少一组任务组中每组任务组进行执行,实现任务集合的执行。
本公开上述实施例提供的一种任务调度执行装置,从任务数据库中获得待执行的任务集合;其中,所述任务集合包括多个任务以及所述多个任务中的每个任务对应的关联信息;所述关联信息表示所述任务与至少一个任务存在关联关系或不存在关联关系;基于每个所述任务的关联信息对所述任务集合进行分组处理,得到至少一组任务组;每组所述任务组中包括至少一个互相存在关联关系的任务;分别对所述至少一组任务组中每组任务组进行执行,实现所述任务集合的执行;本实施例通过分组并分别对至少一组任务组进行执行,提升了任务执行的效率的同时,解决了不同场景的任务调度,可适用于对多种场景下的多个任务的调度。
可选地,任务分组模块82,具体用于以每个任务为节点,存在关联关系的任务之间形成边,确定任务集合对应的至少一个图;利用并查集算法对至少一个图执行分组处理,得到至少一个任务组;每个任务组对应一个有向无环图。
在一些可选实施例中,任务执行模块83,包括:
权重确定单元,用于确定每组任务组对应的组权重值,基于组权重值确定至少一个任务组的执行顺序;
顺序执行单元,用于按照执行顺序分别对至少一个任务组中每个任务组进行执行。
可选地,权重确定单元,具体用于确定每组任务组中包括至少一个任务中每个任务对应的权重值;基于每组任务组中每个任务对应的权重值,以及任务组中包括的任务数量,确定任务组对应的组权重值。
在另一些可选实施例中,任务组的数量为第一数量;任务执行模块83,包括:
设备确定单元,用于基于第一数量,确定对应的第一数量的线程或第一数量的执行设备;
分布执行单元,用于基于第一数量的线程分别对每组任务组中包括的至少一个任务进行执行;或者,基于第一数量的执行设备分别对每组任务组中包括的至少一个任务进行执行。
在又一些可选实施例中,任务执行模块83,包括:
组内排序单元,用于针对每组任务组,利用拓扑排序算法,确定任务组中至少一个任务的排序,得到任务组对应的至少一条执行路径;
组内执行单元,用于按照至少一条执行路径,对任务组中的至少一个任务进行执行。
可选地,组内排序单元,具体用于确定至少一个任务中每个任务对应的节点的入度;其中,每个任务在任务组对应的图中对应一个节点;按照入度的大小对至少一个任务进行排序,得到任务组对应的至少一条执行路径。
可选地,组内排序单元在按照入度的大小对至少一个任务进行排序,得到任务组对应的至少一条执行路径时,用于按照入度从小到大对至少一个任务进行排序,得到一个序列;利用贪心算法,确定序列中入度相同的至少一个任务之间的排序,将序列分解为至少一条执行路径。
本公开上述实施例提供的装置,实现了对存在依赖关系的多任务调度。然而,在不同的实际应用场景下,任务和调度策略的特征各有不同。故为了让这些关键逻辑得到更好地重复利用,采用设计模式对其进行提炼,使其成为通用化组件(对应本实施例提供的装置),通过通用化组件实现适用于多种任务场景中认为的调度。
示例性电子设备
下面,参考图9来描述根据本公开实施例的电子设备。该电子设备可以是第一设备和第二设备中的任一个或两者、或与它们独立的单机设备,该单机设备可以与第一设备和第二设备进行通信,以从它们接收所采集到的输入信号。
图9图示了根据本公开实施例的电子设备的框图。
如图9所示,电子设备包括一个或多个处理器和存储器。
处理器可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备中的其他组件以执行期望的功能。
存储器可以存储一个或多个计算机程序产品,所述存储器可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序产品,处理器可以运行所述计算机程序产品,以实现上文所述的本公开的各个实施例的任务调度执行方法以及/或者其他期望的功能。
在一个示例中,电子装置还可以包括:输入装置和输出装置,这些组件通过总线系统和/或其他形式的连接机构(未示出)互连。
此外,该输入装置还可以包括例如键盘、鼠标等等。
该输出装置可以向外部输出各种信息,包括确定出的距离信息、方向信息等。该输出装置可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出装置等等。
当然,为了简化,图9中仅示出了该电子设备中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备还可以包括任何其他适当的组件。
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的任务调度执行方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述部分中描述的根据本公开各种实施例的任务调度执行方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于系统实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、系统的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、系统。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。

Claims (10)

1.一种任务调度执行方法,其特征在于,包括:
从任务数据库中获得待执行的任务集合;其中,所述任务集合包括多个任务以及所述多个任务中的每个任务对应的关联信息;所述关联信息表示所述任务与至少一个任务存在关联关系或不存在关联关系;
基于每个所述任务的关联信息对所述任务集合进行分组处理,得到至少一组任务组;每组所述任务组中包括至少一个互相存在关联关系的任务;
分别对所述至少一组任务组中每组任务组进行执行,实现所述任务集合的执行。
2.根据权利要求1所述的方法,其特征在于,所述基于每个所述任务的关联信息对所述任务集合进行分组处理,得到至少一个任务组,包括:
以每个所述任务为节点,存在关联关系的所述任务之间形成边,确定所述任务集合对应的至少一个图;
利用并查集算法对所述至少一个图执行分组处理,得到所述至少一个任务组;每个所述任务组对应一个有向无环图。
3.根据权利要求1或2所述的方法,其特征在于,所述分别对所述至少一组任务组中每组任务组进行执行,包括:
确定每组所述任务组对应的组权重值,基于所述组权重值确定所述至少一个任务组的执行顺序;
按照所述执行顺序分别对所述至少一个任务组中每个任务组进行执行。
4.根据权利要求3所述的方法,其特征在于,所述确定每组所述任务组对应的组权重值,包括:
确定每组所述任务组中包括至少一个任务中每个任务对应的权重值;
基于每组所述任务组中每个任务对应的权重值,以及所述任务组中包括的任务数量,确定所述任务组对应的所述组权重值。
5.根据权利要求1或2所述的方法,其特征在于,所述任务组的数量为第一数量;
所述分别对所述至少一组任务组中每组任务组进行执行,包括:
基于所述第一数量,确定对应的第一数量的线程或第一数量的执行设备;
基于所述第一数量的线程分别对每组所述任务组中包括的至少一个任务进行执行;或者,
基于所述第一数量的执行设备分别对每组所述任务组中包括的至少一个任务进行执行。
6.根据权利要求1-5任一所述的方法,其特征在于,所述分别对所述至少一组任务组中每组任务组进行执行,包括:
针对每组所述任务组,利用拓扑排序算法,确定所述任务组中至少一个任务的排序,得到所述任务组对应的至少一条执行路径;
按照所述至少一条执行路径,对所述任务组中的至少一个任务进行执行。
7.根据权利要求6所述的方法,其特征在于,所述利用拓扑排序算法,确定所述任务组中至少一个任务的排序,得到所述任务组对应的至少一条执行路径,包括:
确定所述至少一个任务中每个任务对应的节点的入度;其中,每个所述任务在所述任务组对应的图中对应一个节点;
按照所述入度的大小对所述至少一个任务进行排序,得到所述任务组对应的至少一条执行路径。
8.根据权利要求7所述的方法,其特征在于,所述按照所述入度的大小对所述至少一个任务进行排序,得到所述任务组对应的至少一条执行路径,包括:
按照所述入度从小到大对所述至少一个任务进行排序,得到一个序列;
利用贪心算法,确定所述序列中入度相同的至少一个任务之间的排序,将所述序列分解为至少一条执行路径。
9.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序产品;
处理器,用于执行所述存储器中存储的计算机程序产品,且所述计算机程序产品被执行时,实现上述权利要求1-8任一所述的任务调度执行方法。
10.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该计算机程序指令被处理器执行时,实现上述权利要求1-8任一所述的任务调度执行方法。
CN202311508019.2A 2023-11-13 2023-11-13 任务调度执行方法、电子设备和计算机可读存储介质 Pending CN117331674A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311508019.2A CN117331674A (zh) 2023-11-13 2023-11-13 任务调度执行方法、电子设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311508019.2A CN117331674A (zh) 2023-11-13 2023-11-13 任务调度执行方法、电子设备和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN117331674A true CN117331674A (zh) 2024-01-02

Family

ID=89283190

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311508019.2A Pending CN117331674A (zh) 2023-11-13 2023-11-13 任务调度执行方法、电子设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN117331674A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117891584A (zh) * 2024-03-15 2024-04-16 福建顶点软件股份有限公司 基于dag分组的任务并行度调度方法、介质和设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117891584A (zh) * 2024-03-15 2024-04-16 福建顶点软件股份有限公司 基于dag分组的任务并行度调度方法、介质和设备
CN117891584B (zh) * 2024-03-15 2024-05-14 福建顶点软件股份有限公司 基于dag分组的任务并行度调度方法、介质和设备

Similar Documents

Publication Publication Date Title
KR102482122B1 (ko) 태스크 병렬 처리 구현 방법, 장치, 기기 및 매체
Li et al. Performance modeling and predictive scheduling for distributed stream data processing
Ghorbannia Delavar et al. HSGA: a hybrid heuristic algorithm for workflow scheduling in cloud systems
Tang et al. A stochastic scheduling algorithm for precedence constrained tasks on grid
US20210248469A1 (en) Method and apparatus for scheduling deep learning reasoning engines, device, and medium
Munir et al. SDBATS: a novel algorithm for task scheduling in heterogeneous computing systems
US20110321058A1 (en) Adaptive Demand-Driven Load Balancing
US20090282413A1 (en) Scalable Scheduling of Tasks in Heterogeneous Systems
CN117331674A (zh) 任务调度执行方法、电子设备和计算机可读存储介质
Hu et al. Adaptive scheduling of task graphs with dynamic resilience
CN115840631B (zh) 基于raft的高可用分布式任务调度方法和设备
CN110781180B (zh) 一种数据筛选方法和数据筛选装置
Gu et al. Maximizing workflow throughput for streaming applications in distributed environments
Cho et al. Scheduling parallel real-time tasks on the minimum number of processors
CN110688229B (zh) 任务处理方法和装置
CN111930485B (zh) 一种基于性能表现的作业调度方法
US20080028098A1 (en) Reduction of message flow between bus-connected consumers and producers
CN113760638A (zh) 一种基于kubernetes集群的日志服务方法和装置
Lin et al. Impact of MapReduce policies on job completion reliability and job energy consumption
Suman et al. Analysis of process scheduling algorithm for multiprocessor system
Renaux et al. Parallel gesture recognition with soft real-time guarantees
Yang et al. Resource optimization in distributed real-time multimedia applications
Huang et al. Task clustering heuristics for efficient execution time reduction in workflow scheduling
Shi et al. An efficient scheduling algorithm for distributed heterogeneous systems with task duplication allowed
Shah et al. Enabling qos support for multi-core message broker in publish/subscribe system

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