CN111813515A - 基于多进程的任务调度方法、装置、计算机设备及介质 - Google Patents

基于多进程的任务调度方法、装置、计算机设备及介质 Download PDF

Info

Publication number
CN111813515A
CN111813515A CN202010610172.6A CN202010610172A CN111813515A CN 111813515 A CN111813515 A CN 111813515A CN 202010610172 A CN202010610172 A CN 202010610172A CN 111813515 A CN111813515 A CN 111813515A
Authority
CN
China
Prior art keywords
task
basic
new
node
time
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
CN202010610172.6A
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.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China 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 Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN202010610172.6A priority Critical patent/CN111813515A/zh
Publication of CN111813515A publication Critical patent/CN111813515A/zh
Pending legal-status Critical Current

Links

Images

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/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration

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

本发明公开了一种基于多进程的任务调度方法、装置、计算机设备及介质,包括:对每个基础任务进行解析,得到开始时间和结束时间,按开始时间排序得到任务序列,初始化最小堆二叉树,将任务序列第一个基础任务的结束时间写入到最小堆二叉树的节点键值中,并构建任务进程执行第一个基础任务,针对任务序列中的第i个基础任务,在当前时间为基础任务的开始时间时,若最小堆二叉树中的根节点键值对应的时间点在当前时间后,则对最小堆二叉树生成新的分枝,并将对应的结束时间写入新的分枝的节点键值中,构建新的分枝对应的任务进程执行第i个基础任务。本发明提高了任务调度的效率。本发明还涉及区块链技术,将得到的最小堆二叉树存储至区块链中。

Description

基于多进程的任务调度方法、装置、计算机设备及介质
技术领域
本发明涉及数据处理领域,尤其涉及一种基于多进程的任务调度方法、装置、计算机设备及介质。
背景技术
许多领域都涉及任务调度问题,任务调度问题是现实中存在的一种决策问题,例如,集群任务分配,工厂流水线任务分配,RAP机器人的任务分配等,怎样合理的把各种有限的资源分配给各个流水线/子节点,使得在相对较低的成本投入下得到较大利益是每一个任务调度所追求的目标。任务调度问题满足一定的条件:待分配的资源是有限的;资源分配给不同的工程所创造的效益是不同的,于是就产生了如何分配任务以使工程目标或生产目的达到最优的问题。
针对任务调度问题,现有技术使用了传统的人工智能搜索方法和回朔方法的思想,并通过剪枝方法来优化。从理论上讲,算法可以计算出分配资源最优的问题。但是,对于一个比较大地资源和任务数来说,搜索方法和回朔方法,显然会非常耗时,时间复杂度是指数阶O(2^n)增大的非常快,否则哪怕n只是100,都是消耗极多的运行时间,在使得执行效率太低,无法应用到实际的工程中,因而,寻求一种高效进行任务调度的方法,成为一个亟待解决的难题。
发明内容
本发明实施例提供一种基于多进程的任务调度方法、装置、计算机设备和存储介质,以提高任务调度的效率。
为了解决上述技术问题,本申请实施例提供一种基于多进程的任务调度方法,包括:
获取每个待处理的基础任务,对所述基础任务进行解析,得到所述基础任务的开始时间和结束时间;
基于所述开始时间的先后顺序,对所述基础任务进行排序,得到任务序列;
初始化最小堆二叉树,将所述任务序列第一个基础任务的结束时间写入到所述最小堆二叉树的节点键值中,并构建任务进程,使用所述任务进程执行所述任务序列中的第一个基础任务,其中,所述最小堆二叉树的每条分枝指示一个任务进程;
针对任务序列中的第i个所述基础任务,在当前时间为所述基础任务的开始时间时,若所述最小堆二叉树中的根节点键值对应的时间点在当前时间之后,则对所述最小堆二叉树生成新的分枝,并将第i个基础任务对应的结束时间写入到所述新的分枝的节点键值中,其中,i为大于1的正整数;
构建所述新的分枝对应的任务进程,使用所述新的分枝对应的任务进程执行第i个所述基础任务。
可选地,在所述基于所述开始时间的先后顺序,对所述基础任务进行排序,得到任务序列之后,所述基于多进程的任务调度方法还包括:
接收新的任务数据,并获取所述新的任务数据的开始时间和所述新的任务数据的结束时间;
从所述任务序列中,随机选取一个位置,作为所述新的任务数据的初始位置;
基于所述初始位置和所述新的任务数据的开始时间,采用二分法进行调整排序,得到更新后的任务序列。
可选地,所述构建任务进程,使用所述任务进程执行所述任务序列中的第一个基础任务包括:
按照预设的线程数量,在所述任务进程中创建定长线程池;
通过所述定长线程池,执行所述任务进程中的基础任务。
可选地,在所述初始化最小堆二叉树,将所述任务序列第一个基础任务的结束时间写入到所述最小堆二叉树的节点键值中,并构建任务进程,使用所述任务进程执行所述任务序列中的第一个基础任务之后,所述基于多进程的任务调度方法还包括:
定期获取根节点键值对应的时间点,并将所述根节点键值对应的时间点与获取时间点进行比较,得到比较结果;
若所述比较结果为所述根节点键值对应的时间点在所述获取时间点之前,则将所述根节点进行节点下沉,作为更新后的子节点,并构建新的根节点;
销毁更新后的子节点对应的任务进程。
可选地,所述若所述比较结果为所述根节点键值对应的时间点在所述获取时间点之前,则将所述根节点进行节点下沉,作为更新后的子节点,并构建新的根节点包括:
从所述根节点的子节点中,选取任一子节点作为目标子节点;
在所述根节点与所述目标子节点中,***新的节点,作为中间节点,其中,所述中间节点的键值的初始值为空;
将所述根节点与所述中间节点的键值进行交换,更新节点索引,并将下沉后的根节点,作为更新后的子节点,将更新后的中间节点,作为所述新的根节点。
可选地,所述基于多进程的任务调度方法还包括:将得到的最小堆二叉树存储于区块链网络节点中。
为了解决上述技术问题,本申请实施例还提供一种基于多进程的任务调度装置,包括:
信息解析模块,用于获取每个待处理的基础任务,对所述基础任务进行解析,得到所述基础任务的开始时间和结束时间;
任务排序模块,用于基于所述开始时间的先后顺序,对所述基础任务进行排序,得到任务序列;
进程构建模块,用于初始化最小堆二叉树,将所述任务序列第一个基础任务的结束时间写入到所述最小堆二叉树的节点键值中,并构建任务进程,使用所述任务进程执行所述任务序列中的第一个基础任务,其中,所述最小堆二叉树的每条分枝指示一个任务进程;
分枝生成模块,用于针对任务序列中的第i个所述基础任务,在当前时间为所述基础任务的开始时间时,若所述最小堆二叉树中的根节点键值对应的时间点在当前时间之后,则对所述最小堆二叉树生成新的分枝,并将第i个基础任务对应的结束时间写入到所述新的分枝的节点键值中,其中,i为大于1的正整数;
多进程构建模块,用于构建所述新的分枝对应的任务进程,使用所述新的分枝对应的任务进程执行第i个所述基础任务。
可选地,所述基于多进程的任务调度装置还包括:
新任务接收模块,用于接收新的任务数据,并获取所述新的任务数据的开始时间和所述新的任务数据的结束时间;
位置选取模块,用于从所述任务序列中,随机选取一个位置,作为所述新的任务数据的初始位置;
序列更新模块,用于基于所述初始位置和所述新的任务数据的开始时间,采用二分法进行调整排序,得到更新后的任务序列。
可选地,所述进程构建模块包括:
线程池创建模块,用于按照预设的线程数量,在所述任务进程中创建定长线程池;
多线程执行模块,用于通过所述定长线程池,执行所述任务进程中的基础任务。
可选地,所述基于多进程的任务调度装置还包括:
定时检查模块,用于定期获取根节点键值对应的时间点,并将所述根节点键值对应的时间点与获取时间点进行比较,得到比较结果;
节点更新模块,用于若所述比较结果为所述根节点键值对应的时间点在所述获取时间点之前,则将所述根节点进行节点下沉,作为更新后的子节点,并构建新的根节点;
进程销毁模块,用于销毁更新后的子节点对应的任务进程。
可选地,节点更新模块包括:
目标节点选取单元,用于从所述根节点的子节点中,选取任一子节点作为目标子节点;
节点***单元,用于在所述根节点与所述目标子节点中,***新的节点,作为中间节点,其中,所述中间节点的键值的初始值为空;
节点更新单元,用于将所述根节点与所述中间节点的键值进行交换,更新节点索引,并将下沉后的根节点,作为更新后的子节点,将更新后的中间节点,作为所述新的根节点。
可选地,所述基于多进程的任务调度装置还包括:将得到的最小堆二叉树存储于区块链网络节点中。
为了解决上述技术问题,本申请实施例还提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述基于多进程的任务调度方法的步骤。
为了解决上述技术问题,本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述基于多进程的任务调度方法的步骤。
本发明实施例提供的基于多进程的任务调度方法、装置、计算机设备及存储介质,通过获取每个待处理的基础任务,对基础任务进行解析,得到基础任务的开始时间和结束时间,按照开始时间的先后顺序,对基础任务进行排序,得到任务序列,初始化最小堆二叉树,将任务序列第一个基础任务的结束时间写入到最小堆二叉树的节点键值中,并构建任务进程,使用任务进程执行任务序列中的第一个基础任务,针对任务序列中的第i个基础任务,在当前时间为基础任务的开始时间时,若最小堆二叉树中的根节点键值对应的时间点在当前时间之后,则对最小堆二叉树生成新的分枝,并将第i个基础任务对应的结束时间写入到新的分枝的节点键值中,最后,构建新的分枝对应的任务进程,使用新的分枝对应的任务进程执行第i个基础任务,实现采用二叉树的方式,来对任务进程进行监控,大大优化了任务调度的时间复杂度,提高了任务调度的效率。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请可以应用于其中的示例性***架构图;
图2是本申请的基于多进程的任务调度方法的一个实施例的流程图;
图3是根据本申请的基于多进程的任务调度装置的一个实施例的结构示意图;
图4是根据本申请的计算机设备的一个实施例的结构示意图。
具体实施方式
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同;本文中在申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本申请;本申请的说明书和权利要求书及上述附图说明中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排他的包含。本申请的说明书和权利要求书或上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,如图1所示,***架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。
终端设备101、102、103可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、电子书阅读器、MP3播放器(Moving Picture E界面显示perts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureE界面显示perts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上显示的页面提供支持的后台服务器。
需要说明的是,本申请实施例所提供的基于多进程的任务调度方法由服务器执行,相应地,基于多进程的任务调度装置设置于服务器中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器,本申请实施例中的终端设备101、102、103具体可以对应的是实际生产中的应用***。
请参阅图2,图2示出本发明实施例提供的一种基于多进程的任务调度方法,以该方法应用在图1中的服务端为例进行说明,详述如下:
S201:获取每个待处理的基础任务,对基础任务进行解析,得到基础任务的开始时间和结束时间。
具体地,在接收到待处理的基础任务之后,通过对基础任务进行数据解析,得到每个基础任务的开始时间和结束时间。
需要说明的是,在本实施例中,开始时间和结束时间均为预先设置,为固定时间。
例如,在一具体实施方式中,得到5个待处理的基础任务A1、A2、A3、A4和A5,经过数据解析,得到其开始时间结束时间的元祖标识分别为:(1,20)、(15,25)、(8,28)、(2,15)和(21,50),其中,第一个数值为开始时间,第二个数值为结束时间,(1,20)表示任务开始时间为1,任务结束时间为20。
S202:基于开始时间的先后顺序,对基础任务进行排序,得到任务序列。
具体地,采用预设的排序方式,对对基础任务的开始时间的先后顺序,得到任务序列。
其中,预设的排序方法包括但不限于:冒泡排序、选择排序、***排序和计数排序等。
继续以步骤S10中的示例为例,按照任务开始时间先后进行排序后,得到顺序为1、2、8、15和21,对应的任务序列为{A1,A4,A3,A2,A5}。
优选地,本实施例中预设的排序方式为***排序法。
其中,***排序(Insertion sort)法是一种最简单的排序方法,它的基本思想是将一个记录***到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待***位置查找,并进行移动。
S203:初始化最小堆二叉树,将任务序列第一个基础任务的结束时间写入到最小堆二叉树的节点键值中,并构建任务进程,使用任务进程执行任务序列中的第一个基础任务,其中,最小堆二叉树的每条分枝指示一个任务进程。
具体地,在根据任务开始时间确定任务序列后,初始化一个最小堆二叉树,并将任务序列中的第一个基础任务的结束时间写入到最小堆二叉树的节点键值中,同时,构建一个任务进程,使用构建好的任务进程对执行任务序列中的第一个基础任务。
需要说明的是,本实施例中,采用最小堆二叉树每个分枝来指示一个任务进程。
其中,最小堆二叉树是指经过排序的完全二叉树,其中任一非根节点的键值均不大于其左子节点和右子节点的键值,根节点的键值为最小堆二叉树各个节点键值中的最小值,因而,在根节点的键值对应的结束时间在当前时间之前时,即可正面现存的任务进程中至少存在一个任务进程,在新的任务开始时,可直接使用该任务进行进行任务的执行,而无需再构建新的任务进程,有利于节约***资源。
其中,任务进程是指用于进行基础任务处理的进程,进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作***进行资源分配和调度的一个独立单位,是执行基础任务的载体(或容器)。
其中,构建任务进程可通过***命令的方式,或者自定义函数来实现。
应理解,本实施例中,使用最小堆的节点键值来存储任务结束时间,以实现任务进程当前状态的监控,相对于回溯法或者基于剪枝函数的深度优先搜索,优势在于它的动态可维护性,以及时间复杂程度低,回溯法或者基于剪枝函数的深度优先搜索,在基础任务数量为n时,时间复杂度是指数阶O(2n),在任务数量较多时,会消耗大量的时间,导致任务调度效率较低。而本实施例采用最小堆的方式,最多消耗时间为O(nlogn)。在最坏的情况下,全部n个任务都会互相冲突。在任何情况下,都要向堆执行n次***操作。在最坏的情况下,我们要对堆进行n次查找并删除最小值操作,因为查找并删除最小值操作只消耗O(logn)的时间。在最坏的情况下,堆需要容纳全部n个元素,因此空间复杂度为O(n)。
S204:针对任务序列中的第i个基础任务,在当前时间为基础任务的开始时间时,若最小堆二叉树中的根节点键值对应的时间点在当前时间之后,则对最小堆二叉树生成新的分枝,并将第i个基础任务对应的结束时间写入到新的分枝的节点键值中,其中,i为大于1的正整数。
具体地,针对后面的每个基础任务,在任务启动时,仅需判断有没有空闲的任务进程可用,有空闲的任务进程,则优先使用空闲的任务进程,在没有空闲的任务进程可用时,则开启新的任务进程,而步骤S203中,将任务进程的状态用最小堆二叉树中的键值表达出来,因而,仅需要判断最小堆中的根节点的键值,即可判断是否存在空闲的任务进程。针对任务序列中的第i个基础任务,在当前时间为基础任务的开始时间时,也即,第i个基础任务需要被启动时,判断最小堆二叉树中的根节点键值对应的时间点与当前时间的先后关系,在最小堆二叉树中的根节点键值对应的时间点在当前时间之后时,说明在当前时间,最小堆二叉树对应的任务进程中不存在空闲的任务进程,此时,对最小堆二叉树生成新的分枝,并将第i个基础任务对应的结束时间写入到新的分枝的节点键值中,其中,i为大于1的正整数。
其中,根节点(root)是树的一个组成部分,也叫树根,所有非空的二叉树中,都有且仅有一个根结点简介,它是同一棵树中除本身外所有结点的祖先,没有父节点。
在本实施例中,采用的二叉树为最小堆二叉树,其根节点存储的结束时间为所有节点中,最小的时间点,在最小堆二叉树中的根节点键值对应的时间点在当前时间之后时,即可确定当前时间点不存在空闲的任务进程。
应理解,在最小堆二叉树中的根节点键值对应的时间点在当前时间之前时,即可确定在当前时间点,存在空闲的任务进程,将新增一个节点,并将第i个任务的结束时间存入该节点,并对二叉树的节点进行排序,实现最小堆二叉树的更新。
S205:构建新的分枝对应的任务进程,使用新的分枝对应的任务进程执行第i个基础任务。
具体地,需要生成新的分枝,说明现有的最小堆二叉树中节点对应的基础任务未执行完毕,也即,没有空闲的任务进程,因而,需要对新的分枝构建对应的任务进程,使用新的分枝对应的任务进程执行该第i个基础任务。
通过获取每个待处理的基础任务,对基础任务进行解析,得到基础任务的开始时间和结束时间,按照开始时间的先后顺序,对基础任务进行排序,得到任务序列,初始化最小堆二叉树,将任务序列第一个基础任务的结束时间写入到最小堆二叉树的节点键值中,并构建任务进程,使用任务进程执行任务序列中的第一个基础任务,针对任务序列中的第i个基础任务,在当前时间为基础任务的开始时间时,若最小堆二叉树中的根节点键值对应的时间点在当前时间之后,则对最小堆二叉树生成新的分枝,并将第i个基础任务对应的结束时间写入到新的分枝的节点键值中,最后,构建新的分枝对应的任务进程,使用新的分枝对应的任务进程执行第i个基础任务,实现采用二叉树的方式,来对任务进程进行监控,大大优化了任务调度的时间复杂度,提高了任务调度的效率。
在一实施例中,在得到最终更新后的最小堆二叉树之后,将该最小堆二叉树存储于区块链网络节点中,通过区块链存储,实现最小堆二叉树在不同平台之间的共享,也可防止数据被篡改。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
在本实施例的一些可选的实现方式中,步骤S202之后,该基于多进程的任务调度方法还包括:
接收新的任务数据,并获取新的任务数据的开始时间和新的任务数据的结束时间;
从任务序列中,随机选取一个位置,作为新的任务数据的初始位置;
基于初始位置和新的任务数据的开始时间,采用二分法进行调整排序,得到更新后的任务序列。
具体地,在任务调度过程中,若接收到新的任务,则接收新的任务数据,并获取新的任务数据的开始时间和新的任务数据的结束时间,通过折半***排序法(Binary InsertSort,又称二分***排序法),来将新的任务数据***到任务序列中,得到更新后的任务序列。
其中,折半***排序法是在向已排序的数据中***数据时,采用来折半查找(二分查找)的实现,具体为先取已经排序的序列的中间元素,与待***的数据进行比较,如果中间元素的值大于待***的数据,那么待***的数据属于数组的前半部分,否则属于后半部分。依次类推,不断缩小范围,确定要***的位置。
在本实施例中,通过折半***排序法实现随时接收新的任务数据并进行调度,提高了任务调度的稳健性。
在本实施例的一些可选的实现方式中,步骤S203中,构建任务进程,使用任务进程执行任务序列中的第一个基础任务包括:
按照预设的线程数量,在任务进程中创建定长线程池;
通过定长线程池,执行任务进程中的基础任务。
具体地,本发明实施例使用线程池提供的多线程方式,创建预设线程数量的线程池,对任务进程中的基础任务进行处理。
其中,预设的线程数据可以根据实际任务的需要来进行设置,例如将线程数量设置为6。
其中,线程池包括但不限于可缓存线程池(Cached Thread Pool)、定长线程池(Fixed Thread Pool)、单线程化线程池(Single Thread Executor)和定时线程池(Scheduled Thread Pool)等。
优选地,本发明实施例采用的线程池为定长线程池,通过控制线程的最大并发数,来进行多线程运算,超出的线程会在队列中等待。
例如,在一具体实施方式中,通过使用Executors.newFixedThreadPool(6)来创建一个定长的线程池,这个线程池可以控制最大的线程数为6,超出的线程会在队列中进行等待。在执行基础任务处理时,该线程池可以同时采用6个线程对基础任务执行处理指令,这种使用多线程的方式,节省计算时间,提高了任务处理的效率。
需要说明的是,本实施例提供的构建任务进程,使用任务进程执行任务序列中的基础任务,不仅适用于任务序列的第一个基础任务,也适用于任务序列的其它任务,本实施例仅以第一个基础任务被分配任务进程后的执行过程为例进行说明,不应理解为对其使用范围的闲置。
在本实施例中,通过创建线程池,使用多线程的方式实现任务进程中基础任务的处理,有利于提高了任务处理的效率。
在本实施例的一些可选的实现方式中,步骤S203之后,该基于多进程的任务调度方法还包括:
定期获取根节点键值对应的时间点,并将根节点键值对应的时间点与获取时间点进行比较,得到比较结果;
若比较结果为根节点键值对应的时间点在获取时间点之前,则将根节点进行节点下沉,作为更新后的子节点,并构建新的根节点;
销毁更新后的子节点对应的任务进程。
具体地,通过定时脚本,定时从最小堆二叉树中,读取根节点键值对应的时间点,进而将根节点键值对应的时间点与获取时间点进行对比,得到比较结果,在比较结果为根节点键值对应的时间点在获取时间点之前时,说明在获取根节点键值时,根节点键值对应的结束时间已经过了,也即,在获取时间点时,根节点键值存储的结束时间对应的基础任务已经执行完毕,处理该基础任务的任务进程处于空闲,此时,对最小堆二叉树进行更新,并对已经完成的基础任务对应的任务进行进行销毁,以便节约***资源。
其中,获取时间点是指获取到根节点键值对应的时间点的时间节点。
其中,对根节点进行节点下沉,是指将跟节点下沉为其他节点的子节点,在本实施例中,具体是指将根节点下沉为更新后的根节点的子节点,以实现对最小堆二叉树的更新。具体过程可参考后续实施例的描述,为避免重复,此处不在赘述。
其中,销毁任务进程可使用***指令或者函数来实现。
在本实施例中,通过定时对根节点键值进行检查判断,来及时更新最小堆二叉树,同时及时对完成任务的空闲任务进行进行销毁,节约***资源。
在本实施例的一些可选的实现方式中,若比较结果为根节点键值对应的时间点在获取时间点之前,则将根节点进行节点下沉,作为更新后的子节点,并构建新的根节点包括:
从根节点的子节点中,选取任一子节点作为目标子节点;
在根节点与目标子节点中,***新的节点,作为中间节点,其中,中间节点的键值的初始值为空;
将根节点与中间节点的键值进行交换,更新节点索引,并将下沉后的根节点,作为更新后的子节点,将更新后的中间节点,作为新的根节点。
具体地,本实施例中的根节点存在一个或多个子节点,在比较结果为根节点键值对应的时间点在获取时间点之前的时候,也即,该根节点中存储的结束时间对应的基础任务被执行完毕,此时,通过节点下沉(元素下沉)的方式,将根节点下沉为子节点,并构建新的节点作为新的根节点。
本实施例中,在检测到根节点键值对应的时间点在获取时间点之前时,及时更新最小堆二叉树,有利于提高后续基础任务开始时的校验速度,同时,根据本次对比判断,实现及时发现空闲任务进程,并及时回收,有利于节约***资源。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
图3示出与上述实施例基于多进程的任务调度方法一一对应的基于多进程的任务调度装置的原理框图。如图3所示,该基于多进程的任务调度装置包括信息解析模块31、任务排序模块32、进程构建模块33、分枝生成模块34和多进程构建模块35。各功能模块详细说明如下:
信息解析模块31,用于获取每个待处理的基础任务,对基础任务进行解析,得到基础任务的开始时间和结束时间;
任务排序模块32,用于基于开始时间的先后顺序,对基础任务进行排序,得到任务序列;
进程构建模块33,用于初始化最小堆二叉树,将任务序列第一个基础任务的结束时间写入到最小堆二叉树的节点键值中,并构建任务进程,使用任务进程执行任务序列中的第一个基础任务,其中,最小堆二叉树的每条分枝指示一个任务进程;
分枝生成模块34,用于针对任务序列中的第i个基础任务,在当前时间为基础任务的开始时间时,若最小堆二叉树中的根节点键值对应的时间点在当前时间之后,则对最小堆二叉树生成新的分枝,并将第i个基础任务对应的结束时间写入到新的分枝的节点键值中,其中,i为大于1的正整数;
多进程构建模块35,用于构建新的分枝对应的任务进程,使用新的分枝对应的任务进程执行第i个基础任务。
可选地,基于多进程的任务调度装置还包括:
新任务接收模块,用于接收新的任务数据,并获取新的任务数据的开始时间和新的任务数据的结束时间;
位置选取模块,用于从任务序列中,随机选取一个位置,作为新的任务数据的初始位置;
序列更新模块,用于基于初始位置和新的任务数据的开始时间,采用二分法进行调整排序,得到更新后的任务序列。
可选地,进程构建模块33包括:
线程池创建单元,用于按照预设的线程数量,在任务进程中创建定长线程池;
多线程执行单元,用于通过定长线程池,执行任务进程中的基础任务。
可选地,基于多进程的任务调度装置还包括:
定时检查模块,用于定期获取根节点键值对应的时间点,并将根节点键值对应的时间点与获取时间点进行比较,得到比较结果;
节点更新模块,用于若比较结果为根节点键值对应的时间点在获取时间点之前,则将根节点进行节点下沉,作为更新后的子节点,并构建新的根节点;
进程销毁模块,用于销毁更新后的子节点对应的任务进程。
可选地,节点更新模块包括:
目标节点选取单元,用于从根节点的子节点中,选取任一子节点作为目标子节点;
节点***单元,用于在根节点与目标子节点中,***新的节点,作为中间节点,其中,中间节点的键值的初始值为空;
节点更新单元,用于将根节点与中间节点的键值进行交换,更新节点索引,并将下沉后的根节点,作为更新后的子节点,将更新后的中间节点,作为新的根节点。
可选地,基于多进程的任务调度装置还包括:将得到的最小堆二叉树存储于区块链网络节点中。
关于基于多进程的任务调度装置的具体限定可以参见上文中对于基于多进程的任务调度方法的限定,在此不再赘述。上述基于多进程的任务调度装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
为解决上述技术问题,本申请实施例还提供计算机设备。具体请参阅图4,图4为本实施例计算机设备基本结构框图。
所述计算机设备4包括通过***总线相互通信连接存储器41、处理器42、网络接口43。需要指出的是,图中仅示出了具有组件连接存储器41、处理器42、网络接口43的计算机设备4,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。其中,本技术领域技术人员可以理解,这里的计算机设备是一种能够按照事先设定或存储的指令,自动进行数值计算和/或信息处理的设备,其硬件包括但不限于微处理器、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程门阵列(Field-Programmable Gate Array,FPGA)、数字处理器(Digital Signal Processor,DSP)、嵌入式设备等。
所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可以与用户通过键盘、鼠标、遥控器、触摸板或声控设备等方式进行人机交互。
所述存储器41至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或D界面显示存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,所述存储器41可以是所述计算机设备4的内部存储单元,例如该计算机设备4的硬盘或内存。在另一些实施例中,所述存储器41也可以是所述计算机设备4的外部存储设备,例如该计算机设备4上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,所述存储器41还可以既包括所述计算机设备4的内部存储单元也包括其外部存储设备。本实施例中,所述存储器41通常用于存储安装于所述计算机设备4的操作***和各类应用软件,例如电子文件的控制的程序代码等。此外,所述存储器41还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器42在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器42通常用于控制所述计算机设备4的总体操作。本实施例中,所述处理器42用于运行所述存储器41中存储的程序代码或者处理数据,例如运行电子文件的控制的程序代码。
所述网络接口43可包括无线网络接口或有线网络接口,该网络接口43通常用于在所述计算机设备4与其他电子设备之间建立通信连接。
本申请还提供了另一种实施方式,即提供一种计算机可读存储介质,所述计算机可读存储介质存储有界面显示程序,所述界面显示程序可被至少一个处理器执行,以使所述至少一个处理器执行如上述的基于多进程的任务调度方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例所述的方法。
显然,以上所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例,附图中给出了本申请的较佳实施例,但并不限制本申请的专利范围。本申请可以以许多不同的形式来实现,相反地,提供这些实施例的目的是使对本申请的公开内容的理解更加透彻全面。尽管参照前述实施例对本申请进行了详细的说明,对于本领域的技术人员来而言,其依然可以对前述各具体实施方式所记载的技术方案进行修改,或者对其中部分技术特征进行等效替换。凡是利用本申请说明书及附图内容所做的等效结构,直接或间接运用在其他相关的技术领域,均同理在本申请专利保护范围之内。

Claims (10)

1.一种基于多进程的任务调度方法,其特征在于,所述基于多进程的任务调度方法包括:
获取每个待处理的基础任务,对所述基础任务进行解析,得到所述基础任务的开始时间和结束时间;
基于所述开始时间的先后顺序,对所述基础任务进行排序,得到任务序列;
初始化最小堆二叉树,将所述任务序列第一个基础任务的结束时间写入到所述最小堆二叉树的节点键值中,并构建任务进程,使用所述任务进程执行所述任务序列中的第一个基础任务,其中,所述最小堆二叉树的每条分枝指示一个任务进程;
针对任务序列中的第i个所述基础任务,在当前时间为所述基础任务的开始时间时,若所述最小堆二叉树中的根节点键值对应的时间点在当前时间之后,则对所述最小堆二叉树生成新的分枝,并将第i个基础任务对应的结束时间写入到所述新的分枝的节点键值中,其中,i为大于1的正整数;
构建所述新的分枝对应的任务进程,使用所述新的分枝对应的任务进程执行第i个所述基础任务。
2.如权利要求1所述的基于多进程的任务调度方法,其特征在于,在所述基于所述开始时间的先后顺序,对所述基础任务进行排序,得到任务序列之后,所述基于多进程的任务调度方法还包括:
接收新的任务数据,并获取所述新的任务数据的开始时间和所述新的任务数据的结束时间;
从所述任务序列中,随机选取一个位置,作为所述新的任务数据的初始位置;
基于所述初始位置和所述新的任务数据的开始时间,采用二分法进行调整排序,得到更新后的任务序列。
3.如权利要求1所述的基于多进程的任务调度方法,其特征在于,所述构建任务进程,使用所述任务进程执行所述任务序列中的第一个基础任务之后,所述基于多进程的任务调度方法还包括:
按照预设的线程数量,在所述任务进程中创建定长线程池;
通过所述定长线程池,执行所述任务进程中的第一个基础任务。
4.如权利要求1至3任一项所述的基于多进程的任务调度方法,其特征在于,在所述初始化最小堆二叉树,将所述任务序列第一个基础任务的结束时间写入到所述最小堆二叉树的节点键值中,并构建任务进程,使用所述任务进程执行所述任务序列中的第一个基础任务之后,所述基于多进程的任务调度方法还包括:
定期获取根节点键值对应的时间点,并将所述根节点键值对应的时间点与获取时间点进行比较,得到比较结果;
若所述比较结果为所述根节点键值对应的时间点在所述获取时间点之前,则将所述根节点进行节点下沉,作为更新后的子节点,并构建新的根节点;
销毁更新后的子节点对应的任务进程。
5.如权利要求4所述的基于多进程的任务调度方法,其特征在于,若所述比较结果为所述根节点键值对应的时间点在所述获取时间点之前,则将所述根节点进行节点下沉,作为更新后的子节点,并构建新的根节点包括:
从所述根节点的子节点中,选取任一子节点作为目标子节点;
在所述根节点与所述目标子节点中,***新的节点,作为中间节点,其中,所述中间节点的键值的初始值为空;
将所述根节点与所述中间节点的键值进行交换,更新节点索引,并将下沉后的根节点,作为更新后的子节点,将更新后的中间节点,作为所述新的根节点。
6.如权利要求1所述的基于多进程的任务调度方法,其特征在于,在构建所述新的分枝对应的任务进程,使用所述新的分枝对应的任务进程执行第i个基础任务之后,所述基于多进程的任务调度方法还包括:将得到的最小堆二叉树存储于区块链网络节点中。
7.一种基于多进程的任务调度装置,其特征在于,所述基于多进程的任务调度装置包括:
信息解析模块,用于获取每个待处理的基础任务,对所述基础任务进行解析,得到所述基础任务的开始时间和结束时间;
任务排序模块,用于基于所述开始时间的先后顺序,对所述基础任务进行排序,得到任务序列;
进程构建模块,用于初始化最小堆二叉树,将所述任务序列第一个基础任务的结束时间写入到所述最小堆二叉树的节点键值中,并构建任务进程,使用所述任务进程执行所述任务序列中的第一个基础任务,其中,所述最小堆二叉树的每条分枝指示一个任务进程;
分枝生成模块,用于针对任务序列中的第i个所述基础任务,在当前时间为所述基础任务的开始时间时,若所述最小堆二叉树中的根节点键值对应的时间点在当前时间之后,则对所述最小堆二叉树生成新的分枝,并将第i个基础任务对应的结束时间写入到所述新的分枝的节点键值中,其中,i为大于1的正整数;
多进程构建模块,用于构建所述新的分枝对应的任务进程,使用所述新的分枝对应的任务进程执行第i个所述基础任务。
8.如权利要求7所述的基于多进程的任务调度装置,其特征在于,所述基于多进程的任务调度装置还包括:
新任务接收模块,用于接收新的任务数据,并获取所述新的任务数据的开始时间和所述新的任务数据的结束时间;
位置选取模块,用于从所述任务序列中,随机选取一个位置,作为所述新的任务数据的初始位置;
序列更新模块,用于基于所述初始位置和所述新的任务数据的开始时间,采用二分法进行调整排序,得到更新后的任务序列。
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6任一项所述的基于多进程的任务调度方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至6任一项所述的基于多进程的任务调度方法。
CN202010610172.6A 2020-06-29 2020-06-29 基于多进程的任务调度方法、装置、计算机设备及介质 Pending CN111813515A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010610172.6A CN111813515A (zh) 2020-06-29 2020-06-29 基于多进程的任务调度方法、装置、计算机设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010610172.6A CN111813515A (zh) 2020-06-29 2020-06-29 基于多进程的任务调度方法、装置、计算机设备及介质

Publications (1)

Publication Number Publication Date
CN111813515A true CN111813515A (zh) 2020-10-23

Family

ID=72856275

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010610172.6A Pending CN111813515A (zh) 2020-06-29 2020-06-29 基于多进程的任务调度方法、装置、计算机设备及介质

Country Status (1)

Country Link
CN (1) CN111813515A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112560789A (zh) * 2020-12-28 2021-03-26 平安银行股份有限公司 图像对象检测方法、装置、电子设备及存储介质
CN112633710A (zh) * 2020-12-26 2021-04-09 中国农业银行股份有限公司 作业任务调度方法、装置、设备及存储介质
CN112685181A (zh) * 2020-12-29 2021-04-20 成都科来网络技术有限公司 一种均衡cpu资源的推送任务调度方法及***
CN113965391A (zh) * 2021-10-27 2022-01-21 成都数默科技有限公司 一种多数据包文件冒泡排序的方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541051A (zh) * 2012-01-11 2012-07-04 山西万立科技有限公司 煤炭产量监测专网防爆型嵌入式前端控制器
CN107689010A (zh) * 2017-07-25 2018-02-13 平安科技(深圳)有限公司 批量处理保单任务的方法、装置、计算机设备及存储介质
CN110412869A (zh) * 2019-06-21 2019-11-05 中南大学 一种多星协同的空间动态目标实时跟踪方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102541051A (zh) * 2012-01-11 2012-07-04 山西万立科技有限公司 煤炭产量监测专网防爆型嵌入式前端控制器
CN107689010A (zh) * 2017-07-25 2018-02-13 平安科技(深圳)有限公司 批量处理保单任务的方法、装置、计算机设备及存储介质
WO2019019381A1 (zh) * 2017-07-25 2019-01-31 平安科技(深圳)有限公司 批量处理保单任务的方法、装置、计算机设备及存储介质
CN110412869A (zh) * 2019-06-21 2019-11-05 中南大学 一种多星协同的空间动态目标实时跟踪方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
徐秀: "多层子树堆排序任务匹配调度算法", 《通信学报》, vol. 31, no. 8, 31 August 2010 (2010-08-31), pages 81 - 86 *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112633710A (zh) * 2020-12-26 2021-04-09 中国农业银行股份有限公司 作业任务调度方法、装置、设备及存储介质
CN112633710B (zh) * 2020-12-26 2023-10-13 中国农业银行股份有限公司 作业任务调度方法、装置、设备及存储介质
CN112560789A (zh) * 2020-12-28 2021-03-26 平安银行股份有限公司 图像对象检测方法、装置、电子设备及存储介质
CN112560789B (zh) * 2020-12-28 2024-06-04 平安银行股份有限公司 图像对象检测方法、装置、电子设备及存储介质
CN112685181A (zh) * 2020-12-29 2021-04-20 成都科来网络技术有限公司 一种均衡cpu资源的推送任务调度方法及***
CN112685181B (zh) * 2020-12-29 2024-06-04 科来网络技术股份有限公司 一种均衡cpu资源的推送任务调度方法及***
CN113965391A (zh) * 2021-10-27 2022-01-21 成都数默科技有限公司 一种多数据包文件冒泡排序的方法
CN113965391B (zh) * 2021-10-27 2023-10-20 成都数默科技有限公司 一种多数据包文件冒泡排序的方法

Similar Documents

Publication Publication Date Title
CN111813515A (zh) 基于多进程的任务调度方法、装置、计算机设备及介质
CN108848039B (zh) 服务器、消息分配的方法及存储介质
CN102695999B (zh) 用于动态功率管理的域特定语言、编译程序和jit
CN111813517B (zh) 任务队列的分配方法、装置、计算机设备及介质
CN109840142A (zh) 基于云监控的线程控制方法、装置、电子设备及存储介质
US7243354B1 (en) System and method for efficiently processing information in a multithread environment
CN113254445A (zh) 实时数据存储方法、装置、计算机设备及存储介质
CN111782304A (zh) 分页加载数据逻辑控制方法、装置、计算机设备及介质
CN112199442A (zh) 分布式批量下载文件方法、装置、计算机设备及存储介质
CN115455058A (zh) 缓存数据的处理方法、装置、计算机设备及存储介质
CN115757492A (zh) 一种热点数据的处理方法、装置、计算机设备及存储介质
CN114281552A (zh) 一种基于有向无环图的任务调度方法、装置、设备及介质
CN112965721B (zh) 基于Android的项目编译方法、装置、计算机设备及存储介质
CN113254106A (zh) 基于Flink的任务执行方法、装置、计算机设备及存储介质
CN110908644B (zh) 状态节点的配置方法、装置、计算机设备和存储介质
CN111143568A (zh) 一种论文分类时的缓冲方法、装置、设备及存储介质
CN115061916B (zh) 自动化生成接口测试用例的方法及其相关设备
CN114372071A (zh) 一种表数据删除方法、装置、计算机设备及存储介质
CN114968719A (zh) 线程运行状态分类方法、装置、计算机设备及存储介质
CN114626352A (zh) 报表自动化生成方法、装置、计算机设备及存储介质
CN112328381A (zh) 启动任务执行顺序的决策方法、装置、计算机设备及介质
CN111984202A (zh) 一种数据处理方法、装置、电子设备和存储介质
CN110795117A (zh) 更新配置文件的方法、***、电子设备及存储介质
CN118113376A (zh) 用于控制矿灯的应用程序启动方法及相关设备
CN117806738A (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