任务并行处理方法和装置制造方法及图纸

技术编号:9865497 阅读:172 留言:0更新日期:2014-04-02 23:12
本申请公开了一种任务并行处理方法和装置,其中,该方法包括:确定待处理任务的个数M,其中,M为正整数;根据个数M判断待处理任务能否被分为多个待处理任务集合,其中,每个待处理任务集合包括多个待处理任务且个数相同;根据个数M确定多个能将待处理任务分为多个待处理任务集合的第一数值;将待处理任务分为多个待处理任务集合,其中,每个待处理任务集合包括M/N个待处理任务,其中,N为正整数,且N是第一数值中的一个;对多个待处理任务集合中的待处理任务进行并行处理。本申请解决了现有技术中任意指定一个整数对待处理任务进行拆分而造成的对有些可以平均拆分的任务未被平均拆分而造成的资源浪费和任务执行速度降低的技术问题。

【技术实现步骤摘要】
任务并行处理方法和装置
本申请涉及互联网领域,具体而言,涉及一种任务并行处理方法和装置。
技术介绍
目前为了提升软件的处理能力,引入了并发处理的流程,简单地说,就是本来一件事情由一个人做,现在变成一件事情由两个或者N个人做。通过这种方式,从理论上而言任务执行的效率提升了N倍。对于在软件编程中,这种并发处理的流程更为普遍,一般将这种编程方式称作多线程编程,即,将原本一个线程处理的事情,拆分成多个线程来并发处理。例如,对于Java数组或者是List等数据结构的循环操作,就可以拆分成多个线程来同时进行处理。假设现在有一个长度为X的Java数组的循环,就可以将这个数组拆分成N个大小为M的数组,并用N个线程分别处理这些数组。然而,目前常用的拆分方式一般并不考虑待拆分的数组的总长度是多少,而是通过定义一个固定的数值,用当前的总数X去除以指定的这个数值进行任务的拆分,而并不考虑当前总数和这个指定数值之间的关系。例如,对于一个任务数是20的待处理任务,预先定义了数值3,那么通过现有技术的方式,该待处理任务就将被拆分为:7,7,6这样三个任务集合,这时就需要对6的任务集合进行特殊处理,而且因为每个任务集合不是等长的,因此每个任务集合的线程的处理速度也是不相同的,从而造成了资源的浪费。然而,对于任务个数是20的待处理任务是可以分为平均分为4个待处理任务集合,每个集合中都有5个待处理任务,从而每个任务集合的处理可以是相同的。相关技术中并未考虑到这个问题,从而造成了不必要的资源浪费,也从一定程度上降低了任务执行的效率。针对上述问题,尚未提出有效的解决方法。
技术实现思路
本申请提供了一种任务并行处理方法和装置,以至少解决现有技术中任意指定一个整数对待处理任务进行拆分而造成的对有些可以平均拆分的任务未被平均拆分而造成的资源浪费和任务执行速度降低的技术问题。根据本申请的一个方面,提供了一种任务并行处理方法,该方法包括:确定待处理任务的个数M,其中,M为正整数;根据个数M判断待处理任务能否被分为多个待处理任务集合,其中,每个待处理任务集合包括多个待处理任务且个数相同;若待处理任务能被分为多个待处理任务集合,则根据个数M确定多个能将待处理任务分为多个待处理任务集合的第一数值;将待处理任务分为多个待处理任务集合,其中,每个待处理任务集合包括M/N个待处理任务,其中,N为正整数,且N是第一数值中的一个;对多个待处理任务集合中的待处理任务进行并行处理。优选地,在根据个数M判断待处理任务不能被分为多个待处理任务集合之后,上述方法还包括:若待处理任务不能被分为多个待处理任务集合,则根据M-1或M+1确定所有能将待处理任务中的M-1或M+1个任务分为多个待处理任务集合的第二数值;将待处理任务分为多个待处理任务集合,其中,每个待处理任务集合包括(M-1)/Q或(M+1)/Q个待处理任务,其中,Q为正整数,且Q是第二数值中的一个。优选地,确定N的值包括:确定系统当前允许并行处理的线程的个数;将第一数值中与线程的个数最接近,且小于线程的个数的数值作为N的值;或者确定Q的值包括:确定系统当前允许并行处理的线程的个数;将第二数值中与线程的个数最接近,且小于线程的个数的数值作为Q的值。优选地,根据个数M确定多个能将待处理任务分为多个待处理任务集合的第一数值包括:计算得到个数M的所有约数;将所有约数中1和M之外的数值作为所有能将待处理任务分为多个待处理任务集合的第一数值。优选地,对多个待处理任务集合中的待处理任务进行并行处理包括:为多个待处理任务集合分配线程,其中,多个待处理任务集合中的每一个对应一个线程,线程用于处理多个待处理任务集合中的每一个待处理任务集合中的一个待处理任务;并行执行线程。根据本申请的另一方面,提供了一种任务并行处理装置,包括:第一确定单元,用于确定待处理任务的个数M,其中,M为正整数;判断单元,用于根据个数M判断待处理任务能否被分为多个待处理任务集合,其中,每个待处理任务集合包括的待处理任务的个数相同;第二确定单元,用于当待处理任务能被分为多个待处理任务集合时,根据个数M确定多个能将待处理任务分为多个待处理任务集合的第一数值;第一划分单元,用于将待处理任务分为多个待处理任务集合,其中,每个待处理任务集合包括M/N个待处理任务,其中,N为正整数,且N是第一数值中的一个;处理单元,用于对多个待处理任务集合中的待处理任务进行并行处理。优选地,上述装置还包括:第三确定单元,用于在判断出待处理任务不能被分为多个待处理任务集合时,根据M-1或M+1确定所有能将待处理任务中的M-1或M+1个任务分为多个待处理任务集合的第二数值;第二划分单元,用于将待处理任务分为多个待处理任务集合,其中,每个待处理任务集合包括(M-1)/Q或(M+1)/Q个待处理任务,其中,Q为正整数,且Q是第二数值中的一个。优选地,上述装置还包括:第一确定模块,用于确定系统当前允许并行处理的线程的个数;第二确定模块,用于将第一数值中与线程的个数最接近,且小于线程的个数的数值作为N的值;或者第三确定模块,用于将第二数值中与线程的个数最接近,且小于线程的个数的数值作为Q的值。优选地,第二确定单元包括:获取单元,用于获取个数M的所有约数;第三确定单元,用于将所有约数中1和M之外的数值作为所有能将待处理任务分为多个待处理任务集合的第一数值;存储单元,用于将第一数值用数组的形式进行存储。优选地,处理单元包括:分配模块,用于为多个待处理任务集合分配线程,其中,多个待处理任务集合中的每一个对应一个线程,线程用于处理多个待处理任务集合中的每一个待处理任务集合中的一个待处理任务;执行模块,用于并行执行线程。在本申请中,通过预先确定待处理任务中的任务个数,并依据该任务个数确定可以将待处理任务进行平均分配的数值集合,从该数值集合中选取一个数值对待处理任务进行拆分,从而解决了现有技术中任意指定一个整数对待处理任务进行拆分而造成的对有些可以平均拆分的任务未被平均拆分而造成的资源浪费和任务执行速度降低的技术问题,达到了提高资源利用率和提高任务处理速度的技术效果。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的任务并行处理系统的一种优选结构框图;图2是根据本申请实施例的任务并行处理装置的一种优选结构框图;图3是根据本申请实施例的任务并行处理装置的另一种优选结构框图;图4是根据本申请实施例的任务并行处理装置的又一种优选结构框图;图5是根据本申请实施例的任务并行处理装置的又一种优选结构框图;图6是根据本申请实施例的任务并行处理方法的一种优选流程图;图7是根据本申请实施例的任务并行处理方法的另一种优选流程图;图8是根据本申请实施例的对数组进程拆分的一种优选流程图。具体实施方式下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。在描述本申请的各实施例的进一步细节之前,将参考图1来描述可用于实现本申请的原理的一个合适的计算体系结构。在以下描述中,除非另外指明,否则将参考由一个或多个计算机执行的动作和操作的符号表本文档来自技高网...
任务并行处理方法和装置

【技术保护点】
一种任务并行处理方法,其特征在于,包括:确定待处理任务的个数M,其中,M为正整数;根据所述个数M判断所述待处理任务能否被分为多个待处理任务集合,其中,每个待处理任务集合包括多个所述待处理任务且个数相同;若所述待处理任务能被分为多个待处理任务集合,则根据所述个数M确定多个能将所述待处理任务分为所述多个待处理任务集合的第一数值;将所述待处理任务分为所述多个待处理任务集合,其中,每个待处理任务集合包括M/N个所述待处理任务,其中,所述N为正整数,且所述N是所述第一数值中的一个;对所述多个待处理任务集合中的所述待处理任务进行并行处理。

【技术特征摘要】
1.一种任务并行处理方法,其特征在于,包括:确定待处理任务的个数M,其中,M为正整数;根据所述个数M判断所述待处理任务能否被分为多个待处理任务集合,其中,每个待处理任务集合包括多个所述待处理任务且个数相同;若所述待处理任务能被分为多个待处理任务集合,则根据所述个数M确定多个能将所述待处理任务分为所述多个待处理任务集合的第一数值;将所述待处理任务分为所述多个待处理任务集合,其中,每个待处理任务集合包括M/N个所述待处理任务,其中,所述N为正整数,且所述N是所述第一数值中的一个;对所述多个待处理任务集合中的所述待处理任务进行并行处理。2.根据权利要求1所述的方法,其特征在于,在根据所述个数M判断所述待处理任务能否被分为多个待处理任务集合之后,所述方法还包括:若所述待处理任务不能被分为多个待处理任务集合,则根据M-1或M+1确定能将所述待处理任务中的M-1或M+1个任务分为所述多个待处理任务集合的第二数值;将所述待处理任务分为所述多个待处理任务集合,其中,每个待处理任务集合包括(M-1)/Q或(M+1)/Q个所述待处理任务,其中,所述Q为正整数,且所述Q是所述第二数值中的一个。3.根据权利要求1所述的方法,其特征在于,确定所述N的值包括:确定系统当前允许并行处理的线程的个数;将所述第一数值中与所述线程的个数最接近,且小于所述线程的个数的数值作为所述N的值。4.根据权利要求2所述的方法,其特征在于,确定所述Q的值包括:确定系统当前允许并行处理的线程的个数;将所述第二数值中与所述线程的个数最接近,且小于所述线程的个数的数值作为所述Q的值。5.根据权利要求1所述的方法,其特征在于,根据所述个数M确定多个能将所述待处理任务分为所述多个待处理任务集合的第一数值包括:计算得到所述个数M的所有约数;将所述所有约数中1和M之外的数值作为所有能将所述待处理任务分为所述多个待处理任务集合的第一数值。6.根据权利要求1所述的方法,其特征在于,对所述多个待处理任务集合中的所述待处理任务进行并行处理包括:为所述多个待处理任务集合分配线程,其中,所述多个待处理任务集合中的每一个对应一个所述线程,所述线程用于处理所述多个待处理任务集合中的每一个待处理任务集合中的一个待处理任务;并行执行所述线程。7.一种任务并行处理装置,其特征在于,包括:第一确定...

【专利技术属性】
技术研发人员:戴键阳
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1