CN111880922A - 并发任务的处理方法、装置及设备 - Google Patents
并发任务的处理方法、装置及设备 Download PDFInfo
- Publication number
- CN111880922A CN111880922A CN202010789039.1A CN202010789039A CN111880922A CN 111880922 A CN111880922 A CN 111880922A CN 202010789039 A CN202010789039 A CN 202010789039A CN 111880922 A CN111880922 A CN 111880922A
- Authority
- CN
- China
- Prior art keywords
- concurrent
- processed
- task
- tasks
- maximum
- 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
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
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3017—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开关于一种并发任务的处理方法、装置及设备,并具体公开了:并发任务获取步骤,获取待处理并发任务;最大并发数量计算步骤,基于运行至少一个待处理并发任务时消耗的内存量,计算最大并发数量;并发任务处理步骤,根据最大并发数量,对待处理并发任务进行处理;并发任务监控步骤,重复执行最大并发数量计算步骤以及并发任务处理步骤,直至完成对所有待处理并发任务的处理。
Description
技术领域
本公开涉及互联网领域,尤其涉及一种并发任务的处理方法、装置及设备。
背景技术
目前,在进行并发任务的处理时,通常都是根据经验或实验数据来确定最大并发任务数量,然后,再根据确定的最大并发任务数量来进行并发任务的处理。
然而,由于每台设备具备的资源量不同、每个并发任务所需消耗的资源也不相同,因此,若都根据统一的最大并发任务数量来进行并发任务的处理,则很有可能出现因资源不足而导致的处理崩溃的情况,或因资源过剩而导致的处理时间较长的情况。由此可知,目前在根据统一的最大并发任务数量来进行并发任务的处理时,无法合理地利用设备资源。
发明内容
本公开提供一种并发任务的处理方法、装置及设备,以至少解决相关技术中因根据统一的最大并发任务数量来进行并发任务的处理而导致的无法合理地利用设备资源的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种并发任务的处理方法,所述方法包括:
并发任务获取步骤,获取待处理并发任务;
最大并发数量计算步骤,基于运行至少一个所述待处理并发任务时消耗的内存量,计算最大并发数量;
并发任务处理步骤,根据所述最大并发数量,对所述待处理并发任务进行处理;
并发任务监控步骤,重复执行所述最大并发数量计算步骤以及所述并发任务处理步骤,直至完成对所有所述待处理并发任务的处理。
可选地,所述基于运行至少一个所述待处理并发任务时消耗的内存量,计算最大并发数量,包括:
根据运行至少一个所述待处理并发任务时消耗的内存量,获取平均消耗内存量;
根据所述平均消耗内存量以及可用内存总量,计算所述最大并发数量。
可选地,所述根据所述最大并发数量,对所述待处理并发任务进行处理,包括:
根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务;
对获取的所述目标并发任务进行处理。
可选地,所述根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务,包括:
通过异步编程框架根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务。
可选地,所述通过异步编程框架根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务,包括:
为所述待处理并发任务创建对应的异步编程框架实例;其中,所述异步编程框架实例中包括对应待处理并发任务的执行函数以及参数;所述执行函数以及参数是通过预先创建的异步编程框架调用器传入的;
通过所述待处理并发任务对应的异步编程框架实例,根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务。
可选地,所述通过所述待处理并发任务对应的异步编程框架实例,根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务,包括:
根据当前正在处理的并发任务的数量以及所述最大并发数量,获取所述待处理并发任务对应的异步编程框架实例中的任务执行标识;其中,所述任务执行标识用于表征是否对所对应的待处理并发任务进行处理;
当获取的任务执行标识表征对所对应的待处理并发任务进行处理时,从所述待处理并发任务中获取所述任务执行标识所对应的待处理并发任务。
可选地,在所述通过异步编程框架根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务之后,所述方法还包括:
将所述待处理并发任务中的除目标并发任务以外的并发任务存储至预先创建的任务队列中。
可选地,在所述将所述待处理并发任务中的除目标并发任务以外的并发任务存储至预先创建的任务队列中之后,所述方法还包括:
当任一所述目标并发任务处理完成时,从所述任务队列中选取并发任务,并对所述选取的并发任务进行处理。
根据本公开实施例的第二方面,提供一种并发任务的处理装置,所述装置包括:
并发任务获取模块,被配置为获取待处理并发任务;
最大并发数量计算模块,被配置为基于运行至少一个所述待处理并发任务时消耗的内存量,计算最大并发数量;
并发任务处理模块,被配置为根据所述最大并发数量,对所述待处理并发任务进行处理;
并发任务监控模块,被配置为重复调用所述最大并发数量计算模块以及所述并发任务处理模块,直至完成对所有所述待处理并发任务的处理。
可选地,所述最大并发数量计算模块用于:
根据运行至少一个所述待处理并发任务时消耗的内存量,获取平均消耗内存量;
根据所述平均消耗内存量以及可用内存总量,计算所述最大并发数量。
可选地,所述并发任务处理模块用于:
根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务;
对获取的所述目标并发任务进行处理。
可选地,所述并发任务处理模块进一步用于:
通过异步编程框架根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务。
可选地,所述并发任务处理模块进一步用于:
为所述待处理并发任务创建对应的异步编程框架实例;其中,所述异步编程框架实例中包括对应待处理并发任务的执行函数以及参数;所述执行函数以及参数是通过预先创建的异步编程框架调用器传入的;
通过所述待处理并发任务对应的异步编程框架实例,根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务。
可选地,所述并发任务处理模块进一步用于:
根据当前正在处理的并发任务的数量以及所述最大并发数量,获取所述待处理并发任务对应的异步编程框架实例中的任务执行标识;其中,所述任务执行标识用于表征是否对所对应的待处理并发任务进行处理;
当获取的任务执行标识表征对所对应的待处理并发任务进行处理时,从所述待处理并发任务中获取所述任务执行标识所对应的待处理并发任务。
可选地,在所述通过异步编程框架根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务之后,所述装置还包括:
存储模块,被配置为将所述待处理并发任务中的除目标并发任务以外的并发任务存储至预先创建的任务队列中。
可选地,在所述将所述待处理并发任务中的除目标并发任务以外的并发任务存储至预先创建的任务队列中之后,所述装置还包括:
选取模块,被配置为当任一所述目标并发任务处理完成时,从所述任务队列中选取并发任务,并对所述选取的并发任务进行处理。
根据本公开实施例的第三方面,提供一种电子设备,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如上述第一方面任一项所述的并发任务的处理方法步骤。
根据本公开实施例的第四方面,提供一种存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如上述第一方面任一项所述的并发任务的处理方法步骤。
根据本公开实施例的第五方面,提供一种计算机程序产品,包括:
当其在设备上运行时,使得电子设备执行:上述第一方面任一项所述的并发任务的处理方法步骤。
本公开的实施例提供的技术方案至少带来以下有益效果:
在本公开的实施例提供的技术方案中,可以获取待处理并发任务,并基于运行至少一个待处理并发任务时所消耗的内存量,来计算最大并发数量,然后,可以根据最大并发数量来对待处理并发任务进行处理,并重复执行上述计算最大并发数量的计算步骤以及上述根据最大并发数量对待处理并发任务进行处理的步骤,直至完成对所有待处理并发任务的处理。
由上述内容可知,本技术方案可以在处理待处理并发任务的过程中,重复根据运行至少一个待处理并发任务对应的内存消耗量来确定最大并发数量,并重复根据最新确定的最大并发数量来对当前待处理并发任务进行处理。由于可以重复根据运行至少一个待处理并发任务对应的内存消耗量来确定最大并发数量,因此,可以确保最新确定的最大并发数量是根据当前待处理并发任务的最新资源消耗情况来确定的。由于可以重复根据最新确定的最大并发数量来对当前待处理并发任务进行处理,因此,可以更合理地对并发任务进行处理,更合理地利用设备资源,从而有效解决现有技术的问题。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种并发任务的处理方法的流程图。
图2是根据一示例性实施例示出的一种并发任务的处理装置的框图。
图3是根据一示例性实施例示出的一种并发任务的处理设备的硬件结构示意图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种并发任务的处理方法的流程图,如图1所示,包括以下步骤。
在步骤11中,获取待处理并发任务。
在步骤12中,基于运行至少一个待处理并发任务时消耗的内存量,计算最大并发数量。
在步骤13中,根据最大并发数量,对待处理并发任务进行处理;
在步骤14中,重复执行步骤12以及步骤13,直至完成对所有待处理并发任务的处理。
在本发明实施例中,可以获取待处理并发任务。然后,可以从待处理并发任务中获取至少一个并发任务。其中,在获取时,可以按照并发任务的生成时间来获取、可以按照并发任务的截止时间来获取,也可以按照并发任务的重要等级来获取等,本实施例对此不作限制。
在一个示例中,当按照并发任务的生成时间来获取时,可以按照生成时间距当前时间由远到近的顺序来获取,即可以优先获取生成时间较早的并发任务;当按照并发任务的截止时间来获取时,可以按照截止时间距当前时间由近到远的顺序来获取,即可以优先获取截止时间较早的并发任务;当按照并发任务的重要等级来获取时,可以按照重要等级由高到低的顺序来获取,即可以优先获取重要等级较高的并发任务。
在本实施例中,获取的待处理并发任务的数量可以是默认的,也可以是相关人员根据经验预先设定的,例如,可以为10。
在获取至少一个待处理并发任务后,可以运行获取到的待处理并发任务,并在运行后,获取运行至少一个待处理并发任务时消耗的内存量。
在本实施例中,在获取运行至少一个待处理并发任务时消耗的内存量时,可以先获取在未运行该至少一个待处理并发任务时的第一内存占用量,再获取运行该至少一个待处理并发任务时的第二内存占用量,然后,可以根据第一内存占用量以及第二内存占用量来获取运行至少一个待处理并发任务时消耗的内存量。
例如,获取的未运行该至少一个待处理并发任务时的第一内存占用量可以为A字节,获取的运行该至少一个待处理并发任务时的第二内存占用量可以为B字节,则可以获取运行该至少一个待处理并发任务时消耗的内存量(A-B)字节。
在一个示例中,第一内存占用量以及第二内存占用量可以分别为JavaScript V8引擎中未运行该至少一个待处理并发任务时的内存占用量以及运行该至少一个待处理并发任务时的内存占用量,则第一内存占用量可以根据JavaScript V8引擎中未运行该至少一个待处理并发任务时的总堆内存占用量、当前实际堆内占用量以及V8引擎内部c++内存占用量来确定,第二内存占用量可以根据JavaScript V8引擎中运行该至少一个待处理并发任务时的总堆内存占用量、当前实际堆内占用量以及V8引擎内部c++内存占用量来确定。由于该部分内容可以根据现有技术来实现,故本实施例在此不再赘述。
在获取运行至少一个待处理并发任务时消耗的内存量后,可以计算最大并发数量。
在一个实施例中,在计算最大并发数量时,可以根据运行至少一个待处理并发任务时消耗的内存量来获取平均消耗内存量,然后,可以根据平均消耗内存量以及可用内存总量来计算最大并发数量。其中,平均消耗内存量可以为上述至少一个待处理并发任务对应的平均消耗内存量。
例如,上述至少一个待处理并发任务的数量可以为10,在从待处理并发任务中选取10个并发任务,并对该10个并发任务进行处理后,可以消耗内存X字节,则可以确定该10个并发任务的平均消耗内存为0.1X字节,此时,可以获取平均消耗内存量为0.1X字节。
在获取平均消耗内存量后,可以根据平均消耗内存量以及可用内存总量来计算最大并发数量。
例如,平均消耗内存量可以为0.1X字节,可用内存总量可以为1.5X字节,则可以计算出最大并发数量为1.5X/0.1X=15个。
由上述内容可知,本实施例中可以根据运行至少一个待处理并发任务时消耗的内存量来获取平均消耗内存量,并根据平均消耗内存量以及可用内存总量来计算最大并发数量。由此可知,本实施例示出了一种简单快速地确定最大并发数量的方法,从而可以有效提升最大并发数量的确定速度,提升并发任务的处理效率。
在计算出最大并发数量后,可以根据最大并发数量,来对待处理并发任务进行处理。
在本实施例中,在根据最大并发数量来对待处理并发任务进行处理时,可以获取当前正在处理的并发任务的数量,然后,可以根据当前正在处理的并发任务的数量以及最大并发数量,来从待处理并发任务中获取可在当前处理的目标并发任务,并对获取到的目标并发任务进行处理。
例如,当前正在处理的并发任务的数量可以为M,最大并发数量可以为N,则可以从待处理并发任务中获取(M-N)个并发任务,并对获取的该(M-N)个并发任务进行处理。
由上述内容可知,本实施例可以根据当前正在处理的并发任务的数量以及最大并发数量,从待处理并发任务中获取目标并发任务,并对获取的目标并发任务进行处理。由此可知,本实施例在根据最大并发数量来从待处理并发任务中获取目标并发任务时,考虑到了当前并发任务的实际处理情况,使得获取的目标并发任务更贴近于实际情况,从而使得设备资源的分配更合理。
在一个实施例中,在根据当前正在处理的并发任务的数量以及最大并发数量,从待处理并发任务中获取目标并发任务时,可以通过异步编程框架来进行获取。由于通过异步编程框架可以比较好的实现对并发任务的调用,因此,当通过异步编程框架来获取目标并发任务时,可以较好的实现对目标并发任务的调用,从而有利于后续对目标并发任务的处理。
在一个示例中,异步编程框架可以为promise。
在一个实施例中,在通过异步编程框架根据当前正在处理的并发任务的数量以及最大并发数量从待处理并发任务中获取目标并发任务时,可以先为待处理并发任务创建对应的异步编程框架实例。其中,异步编程框架实例中可以包括对应待处理并发任务的执行函数以及参数,在一个示例中,执行函数以及参数可以是通过预先创建的异步编程框架调用器传入的。
在本实施例中,可以预先创建异步编程框架调用器,其中,异步编程框架调用器用于将任务的执行函数以及参数传入该任务对应的异步编程框架实例。
在一个示例中,任务的执行函数可以为async函数或者返回Promise的函数。
在获取到待处理并发任务后,可以先为各待处理并发任务创建对应的异步编程框架实例,然后,可以获取各待处理并发任务的执行函数以及参数,并将获取到的执行函数以及参数通过预先创建异步编程框架调用器传输至各待处理并发任务对应的异步编程框架实例。
在通过异步编程框架调用器将各待处理并发任务的执行函数以及参数传入至各待处理并发任务对应的异步编程框架实例后,可以通过待处理并发任务对应的异步编程框架实例来根据当前正在处理的并发任务的数量以及最大并发数量,从待处理并发任务中获取目标并发任务。
在本实施例中,最大并发数量可以在确定之后,通过参数传入的方式传入至各待处理并发任务对应的异步编程框架实例中。
由上述内容可知,本实施例中,可以通过待处理并发任务对应的异步编程框架实例来简单快速地从待处理并发任务中获取目标并发任务。由于通过不同的待处理并发任务对应的异步编程框架实例便可以简单快速地实现对相应待处理并发任务的选取和调用,因此,可以有效提升待处理的并发任务的处理速度和效率。
在一个实施例中,在通过待处理并发任务对应的异步编程框架实例,根据当前正在处理的并发任务的数量以及最大并发数量从待处理并发任务中获取目标并发任务时,可以根据当前正在处理的并发任务的数量以及最大并发数量,获取待处理并发任务对应的异步编程框架实例中的任务执行标识,其中,任务执行标识可以用于表征是否对所对应的待处理并发任务进行处理。当获取的任务执行标识表征对所对应的待处理并发任务进行处理时,从待处理并发任务中获取任务执行标识所对应的待处理并发任务。
在本实施例中,待处理并发任务对应的异步编程框架实例中可以包括任务执行标识。根据该任务执行标识可以确定是否对该任务执行标识对应的待处理并发任务进行处理。
在一个实施例中,待处理并发任务对应的异步编程框架实例中的任务执行标识,可以为异步编程框架在根据当前正在处理的并发任务的数量以及最大并发数量来确定的,并在确定后通过异步编程框架调用器传入至待处理并发任务对应的异步编程框架实例中。
当获取的任务执行标识表征对所对应的待处理并发任务进行处理时,可以从待处理并发任务中获取该任务执行标识所对应的待处理并发任务。
由上述内容可知,本实施例中,可以通过待处理并发任务对应的异步编程框架实例中的任务执行标识来从待处理并发任务中获取目标并发任务。由此可知,本实施例可以通过在待处理并发任务对应的异步编程框架实例中设置任务执行标识来简单快速地从待处理并发任务中获取目标并发任务,从而可以有效提升本实施例中的待处理并发任务的处理速度和效率。
在一个实施例中,还可以创建任务队列,并将待处理并发任务中除目标并发任务以外的并发任务存储至预先创建的任务队列中。若当前正在处理的任一并发任务完成处理,则可以根据当前正在处理的并发任务的数量以及最大并发数量从任务队列中选取并发任务,并对选取的并发任务进行处理。
需要说明的是,在创建任务队列,并将待处理并发任务中除目标并发任务以外的并发任务存储至预先创建的任务队列时,上述用于表征是否对所对应的待处理并发任务进行处理的任务执行标识,可以进一步用于表征对所对应的待处理并发任务进行处理或存储至任务队列中。
由此可知,本实施例可以在完成任一并发任务的处理后,从任务队列中选取并发任务来执行,从而可以确保同时处理的并发任务始终控制在最大并发数量内。
在一个实施例中,在将待处理并发任务中的除目标并发任务以外的并发任务存储至预先创建的任务队列中之后,可以在任一目标并发任务处理完成时,从任务队列中选取并发任务,并对选取的并发任务进行处理。
在一个示例中,可以通过finally方法来从任务队列中选取并发任务,并对选取的并发任务进行处理。
由上述内容可知,本实施例中,可以在任一目标并发任务处理完成时,直接通过finally方法来简单快速地从任务队列中选取可在当前进行处理的并发任务,从而可以有效提升本实施例中的待处理并发任务的处理速度和效率。
在本实施例中,在根据最大并发数量对待处理并发任务进行处理后,可以重复执行步骤12以及步骤13,直至完成对所有待处理并发任务的处理。
在一个示例中,待处理并发任务可以包括:任务1、任务2、任务3、任务4以及任务5,获取的任务可以为任务1和任务2,基于运行任务1和任务2时消耗的内存量计算的最大并发数量可以为2。由于根据运行预设数量的待处理并发任务时消耗的内存量计算最大并发数量的过程已在上面的实施例中详述,故本示例对此不再赘述。根据最大并发数2可以对任务1以及任务2进行处理,然后,可以重复执行最大并发数量的确定过程以及根据最大并发数量对待处理并发任务进行处理的过程。此时,可以根据获取当前待处理并发任务,如任务3和任务4,并基于运行任务3和任务4时消耗的内存量,来计算最大并发数量,得到最大并发数量3。并可以根据最大并发数量3对任务3、任务4以及任务5进行处理。此时,可以继续重复执行最大并发数量的确定过程以及根据最大并发数量对待处理并发任务进行处理的过程……直至完成对所有待处理并发任务的处理。
在本示例中,也可以在每处理完任一待处理并发任务后,再重复执行最大并发数量的确定过程以及根据最大并发数量对待处理并发任务进行处理的过程;也可以基于预设的周期来重复执行最大并发数量的确定过程以及根据最大并发数量对待处理并发任务进行处理的过程,本示例不对此进行限制。
在本公开的实施例提供的技术方案中,可以获取待处理并发任务,并基于运行至少一个待处理并发任务时所消耗的内存量,来计算最大并发数量,然后,可以根据最大并发数量来对待处理并发任务进行处理,并重复执行上述计算最大并发数量的计算步骤以及上述根据最大并发数量对待处理并发任务进行处理的步骤,直至完成对所有待处理并发任务的处理。
由上述内容可知,本技术方案可以在处理待处理并发任务的过程中,重复根据运行至少一个待处理并发任务对应的内存消耗量来确定最大并发数量,并重复根据最新确定的最大并发数量来对当前待处理并发任务进行处理。由于可以重复根据运行至少一个待处理并发任务对应的内存消耗量来确定最大并发数量,因此,可以确保最新确定的最大并发数量是根据当前待处理并发任务的最新资源消耗情况来确定的。由于可以重复根据最新确定的最大并发数量来对当前待处理并发任务进行处理,因此,可以更合理地对并发任务进行处理,更合理地利用设备资源,从而有效解决现有技术的问题。
图2是根据一示例性实施例示出的一种并发任务的处理装置的框图。参照图2,该装置包括并发任务获取模块210、最大并发数量计算模块220、并发任务处理模块230以及并发任务监控模块240。
并发任务获取模块210,被配置为获取待处理并发任务;
最大并发数量计算模块220,被配置为基于运行至少一个所述待处理并发任务时消耗的内存量,计算最大并发数量;
并发任务处理模块230,被配置为根据所述最大并发数量,对所述待处理并发任务进行处理;
并发任务监控模块240,被配置为重复调用所述最大并发数量计算模块以及所述并发任务处理模块,直至完成对所有所述待处理并发任务的处理。
可选地,所述最大并发数量计算模块220用于:
根据运行至少一个所述待处理并发任务时消耗的内存量,获取平均消耗内存量;
根据所述平均消耗内存量以及可用内存总量,计算所述最大并发数量。
可选地,所述并发任务处理模块230用于:
根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务;
对获取的所述目标并发任务进行处理。
可选地,所述并发任务处理模块230进一步用于:
通过异步编程框架根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务。
可选地,所述并发任务处理模块进一步用于:
为所述待处理并发任务创建对应的异步编程框架实例;其中,所述异步编程框架实例中包括对应待处理并发任务的执行函数以及参数;所述执行函数以及参数是通过预先创建的异步编程框架调用器传入的;
通过所述待处理并发任务对应的异步编程框架实例,根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务。
可选地,所述并发任务处理模块230进一步用于:
根据当前正在处理的并发任务的数量以及所述最大并发数量,获取所述待处理并发任务对应的异步编程框架实例中的任务执行标识;其中,所述任务执行标识用于表征是否对所对应的待处理并发任务进行处理;
当获取的任务执行标识表征对所对应的待处理并发任务进行处理时,从所述待处理并发任务中获取所述任务执行标识所对应的待处理并发任务。
可选地,在所述通过异步编程框架根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务之后,所述装置还包括(图2中未示出):
存储模块250,被配置为将所述待处理并发任务中的除目标并发任务以外的并发任务存储至预先创建的任务队列中。
可选地,在所述将所述待处理并发任务中的除目标并发任务以外的并发任务存储至预先创建的任务队列中之后,所述装置还包括(图2中未示出):
选取模块260,被配置为当任一所述目标并发任务处理完成时,从所述任务队列中选取并发任务,并对所述选取的并发任务进行处理。
在本公开的实施例提供的技术方案中,可以获取待处理并发任务,并基于运行至少一个待处理并发任务时所消耗的内存量,来计算最大并发数量,然后,可以根据最大并发数量来对待处理并发任务进行处理,并重复执行上述计算最大并发数量的计算步骤以及上述根据最大并发数量对待处理并发任务进行处理的步骤,直至完成对所有待处理并发任务的处理。
由上述内容可知,本技术方案可以在处理待处理并发任务的过程中,重复根据运行至少一个待处理并发任务对应的内存消耗量来确定最大并发数量,并重复根据最新确定的最大并发数量来对当前待处理并发任务进行处理。由于可以重复根据运行至少一个待处理并发任务对应的内存消耗量来确定最大并发数量,因此,可以确保最新确定的最大并发数量是根据当前待处理并发任务的最新资源消耗情况来确定的。由于可以重复根据最新确定的最大并发数量来对当前待处理并发任务进行处理,因此,可以更合理地对并发任务进行处理,更合理地利用设备资源,从而有效解决现有技术的问题。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图3是根据一示例性实施例示出的一种并发任务的处理设备的硬件结构示意图。
该并发任务的处理设备可以为上述实施例提供的用于处理并发任务的服务器。
并发任务的处理设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器301和存储器302,存储器302中可以存储有一个或一个以上存储应用程序或数据。其中,存储器302可以是短暂存储或持久存储。存储在存储器302的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对并发任务的处理设备中的一系列计算机可执行指令。更进一步地,处理器301可以设置为与存储器302通信,在并发任务的处理设备上执行存储器302中的一系列计算机可执行指令。并发任务的处理设备还可以包括一个或一个以上电源303,一个或一个以上有线或无线网络接口304,一个或一个以上输入输出接口305,一个或一个以上键盘306。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种并发任务的处理方法,其特征在于,所述方法包括:
并发任务获取步骤,获取待处理并发任务;
最大并发数量计算步骤,基于运行至少一个所述待处理并发任务时消耗的内存量,计算最大并发数量;
并发任务处理步骤,根据所述最大并发数量,对所述待处理并发任务进行处理;
并发任务监控步骤,重复执行所述最大并发数量计算步骤以及所述并发任务处理步骤,直至完成对所有所述待处理并发任务的处理。
2.根据权利要求1所述的并发任务的处理方法,其特征在于,所述基于运行至少一个所述待处理并发任务时消耗的内存量,计算最大并发数量,包括:
根据运行至少一个所述待处理并发任务时消耗的内存量,获取平均消耗内存量;
根据所述平均消耗内存量以及可用内存总量,计算所述最大并发数量。
3.根据权利要求1所述的并发任务的处理方法,其特征在于,所述根据所述最大并发数量,对所述待处理并发任务进行处理,包括:
根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务;
对获取的所述目标并发任务进行处理。
4.根据权利要求3所述的并发任务的处理方法,其特征在于,所述根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务,包括:
通过异步编程框架根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务。
5.根据权利要求4所述的并发任务的处理方法,其特征在于,所述通过异步编程框架根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务,包括:
为所述待处理并发任务创建对应的异步编程框架实例;其中,所述异步编程框架实例中包括对应待处理并发任务的执行函数以及参数;所述执行函数以及参数是通过预先创建的异步编程框架调用器传入的;
通过所述待处理并发任务对应的异步编程框架实例,根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务。
6.根据权利要求5所述的并发任务的处理方法,其特征在于,所述通过所述待处理并发任务对应的异步编程框架实例,根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务,包括:
根据当前正在处理的并发任务的数量以及所述最大并发数量,获取所述待处理并发任务对应的异步编程框架实例中的任务执行标识;其中,所述任务执行标识用于表征是否对所对应的待处理并发任务进行处理;
当获取的任务执行标识表征对所对应的待处理并发任务进行处理时,从所述待处理并发任务中获取所述任务执行标识所对应的待处理并发任务。
7.根据权利要求4所述的并发任务的处理方法,其特征在于,在所述通过异步编程框架根据当前正在处理的并发任务的数量以及所述最大并发数量,从所述待处理并发任务中获取目标并发任务之后,所述方法还包括:
将所述待处理并发任务中的除目标并发任务以外的并发任务存储至预先创建的任务队列中。
8.根据权利要求7所述的并发任务的处理方法,其特征在于,在所述将所述待处理并发任务中的除目标并发任务以外的并发任务存储至预先创建的任务队列中之后,所述方法还包括:
当任一所述目标并发任务处理完成时,从所述任务队列中选取并发任务,并对所述选取的并发任务进行处理。
9.一种并发任务的处理装置,其特征在于,所述装置包括:
并发任务获取模块,被配置为获取待处理并发任务;
最大并发数量计算模块,被配置为基于运行至少一个所述待处理并发任务时消耗的内存量,计算最大并发数量;
并发任务处理模块,被配置为根据所述最大并发数量,对所述待处理并发任务进行处理;
并发任务监控模块,被配置为重复调用所述最大并发数量计算模块以及所述并发任务处理模块,直至完成对所有所述待处理并发任务的处理。
10.一种电子设备,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至8中任一项所述的并发任务的处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010789039.1A CN111880922A (zh) | 2020-08-07 | 2020-08-07 | 并发任务的处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010789039.1A CN111880922A (zh) | 2020-08-07 | 2020-08-07 | 并发任务的处理方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111880922A true CN111880922A (zh) | 2020-11-03 |
Family
ID=73211377
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010789039.1A Pending CN111880922A (zh) | 2020-08-07 | 2020-08-07 | 并发任务的处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111880922A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874100A (zh) * | 2015-12-10 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 计算资源分配方法及装置 |
CN110618869A (zh) * | 2019-09-19 | 2019-12-27 | 北京思维造物信息科技股份有限公司 | 一种资源管理方法、装置及设备 |
CN110618860A (zh) * | 2019-09-09 | 2019-12-27 | 中盈优创资讯科技有限公司 | 基于Spark的Kafka消费并发处理方法及装置 |
CN110928580A (zh) * | 2019-10-23 | 2020-03-27 | 北京达佳互联信息技术有限公司 | 异步流程控制方法和装置 |
CN111338791A (zh) * | 2020-02-12 | 2020-06-26 | 平安科技(深圳)有限公司 | 集群队列资源的调度方法、装置、设备及存储介质 |
-
2020
- 2020-08-07 CN CN202010789039.1A patent/CN111880922A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874100A (zh) * | 2015-12-10 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 计算资源分配方法及装置 |
CN110618860A (zh) * | 2019-09-09 | 2019-12-27 | 中盈优创资讯科技有限公司 | 基于Spark的Kafka消费并发处理方法及装置 |
CN110618869A (zh) * | 2019-09-19 | 2019-12-27 | 北京思维造物信息科技股份有限公司 | 一种资源管理方法、装置及设备 |
CN110928580A (zh) * | 2019-10-23 | 2020-03-27 | 北京达佳互联信息技术有限公司 | 异步流程控制方法和装置 |
CN111338791A (zh) * | 2020-02-12 | 2020-06-26 | 平安科技(深圳)有限公司 | 集群队列资源的调度方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107577694B (zh) | 一种基于区块链的数据处理方法及设备 | |
KR102125177B1 (ko) | 블록체인 기반 데이터 처리 방법 및 장치 | |
CN109947643B (zh) | 一种基于a/b测试的实验方案的配置方法、装置及设备 | |
CN109104327B (zh) | 一种业务日志生成方法、装置及设备 | |
CN110635962B (zh) | 用于分布式系统的异常分析方法及装置 | |
CN110875935A (zh) | 消息发布、处理、订阅方法、装置及系统 | |
CN108845876B (zh) | 一种业务分配的方法及装置 | |
CN107578338B (zh) | 一种业务发布方法、装置及设备 | |
CN107038058B (zh) | 一种代码处理方法及装置 | |
CN112597013A (zh) | 一种在线开发以及调试方法及装置 | |
CN117312394A (zh) | 一种数据访问方法、装置、存储介质及电子设备 | |
CN114547024A (zh) | 一种sql语句风险检测方法、装置、设备及介质 | |
CN114115016A (zh) | 一种数据处理方法、装置、设备及介质 | |
CN116107728B (zh) | 一种任务执行方法、装置、存储介质及电子设备 | |
CN111273965B (zh) | 一种容器应用启动方法、系统、装置及电子设备 | |
CN113032119A (zh) | 一种任务调度方法、装置、存储介质及电子设备 | |
CN110083602B (zh) | 一种基于hive表的数据存储及数据处理的方法及装置 | |
CN111459573A (zh) | 一种智能合约执行环境的启动方法以及装置 | |
CN116384505A (zh) | 一种数据处理的方法、装置、存储介质及电子设备 | |
CN111880922A (zh) | 并发任务的处理方法、装置及设备 | |
CN107239270B (zh) | 代码处理方法和装置 | |
CN110032433B (zh) | 一种任务执行方法、装置、设备及介质 | |
CN110737524B (zh) | 一种任务规则管理方法、装置、设备及介质 | |
CN110209746B (zh) | 一种数据仓库的数据处理方法及装置 | |
CN117407124B (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 |