CN103885837B - 一种多线程处理数据的方法及装置 - Google Patents
一种多线程处理数据的方法及装置 Download PDFInfo
- Publication number
- CN103885837B CN103885837B CN201410100610.9A CN201410100610A CN103885837B CN 103885837 B CN103885837 B CN 103885837B CN 201410100610 A CN201410100610 A CN 201410100610A CN 103885837 B CN103885837 B CN 103885837B
- Authority
- CN
- China
- Prior art keywords
- data
- group
- total resources
- consumed
- thread
- 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.)
- Active
Links
Abstract
本发明提供一种多线程处理数据的方法及装置,用以实现多个线程同时对大量数据进行处理,合理利用线程的资源,减少线程的资源消耗,提高系统处理数据的效率。本发明方法包括:对于当前采用多线程处理的数据组,当其中的任一数据处理结束时,从未处理的数据中选择一个数据,并添加到该数据组中;其中,一个线程处理一个数据;估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若所述资源总量满足预设条件,则开始处理该组数据。
Description
技术领域
本发明涉及通信领域,尤其涉及一种多线程处理数据的方法及装置。
背景技术
基于全球信息系统(Global Information System,GIS)的呼叫详细记录-测量报告(Call Detail Log-Measurement Report,CDL-MR)海量智能分析系统,可以通过对无线网络控制器(Radio Network Controller,RNC)的CDL-MR数据分析,及时发现网络隐性问题,快速规避网络潜在风险,保证网络稳定健康的发展,该分析系统的应用有效提升了用户终端的服务体验和品牌忠诚度,降低了网络优化成本。
CDL-MR海量智能分析系统对RNC的CDL-MR数据的分析过程包括以下两部分:
第一次分析过程:解析CDL-MR文件中的数据,并将解析出来的数据存入数据库;
第二次分析过程:从数据库中读出CDL-MR文件中的数据,并对该数据进行统计与分析。
在上述第二次分析过程中,为了提高系统的处理速度,通常采用多个线程对数据进行处理;一般的实现方法为:一个线程处理一个RNC的数据,同时对线程的总数进行限制,或者采用线程池技术,所谓线程池是指一种多线程的处理形式,在处理过程中将任务添加到队列,然后在创建线程后自动启动队列中的任务,并按照任务的优先级对任务进行处理。例如:当前有20个RNC的数据需要进行处理,共配置8个线程,则这8个线程首先对20个RNC的数据中的8个RNC的数据进行处理,其他RNC的数据需要等待,如果有线程对某一数据处理完毕,则该线程从剩下的RNC的数据中随机选择一个数据进行处理。
但在CDL-MR海量智能分析系统采用多个线程同时处理数据的过程中,由于处理的数据量比较大,并且在处理过程中,各个线程需要存储大量的数据,如累计计算各种性能指标,内存消耗随着时间的推移,逐渐增加,此时可能会导致系统的内存不够,使得系统的处理效率下降。内存消耗的增加所导致的问题主要体现在以下两方面:
内存消耗的增加导致系统性能的下降,使得系统的处理效率减低;
由于申请的内存有限,例如对于32位机器的应用程序,一个进程申请的内存不能超过2G,随着内存消耗的逐渐增加,当消耗的内存达到上限时,便会导致线程申请内存失败,进而线程将无法继续对数据进行处理。
综上所述,CDL-MR海量智能分析系统在采用多个线程同时处理数据的过程中,由于处理的数据量比较大,并且线程选择所要处理的数据是随机的,没有考虑到处理该数据所消耗的内存资源量,使得对线程的内存资源使用不合理,这样将会消耗大量的内存资源,导致系统性能的下降,系统的处理效率降低。
发明内容
本发明提供一种多线程处理数据的方法及装置,用以实现多个线程同时对大量数据进行处理,合理利用线程的资源,减少线程的资源消耗,提高系统处理数据的效率。
本发明实施例提供一种多线程处理数据的方法,该方法包括:
对于当前采用多线程处理的数据组,当其中的任一数据处理结束时,从未处理的数据中选择一个数据,并添加到该数据组中;其中,一个线程处理一个数据;
估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若所述资源总量满足预设条件,则开始处理该组数据。
从上述方法可以看出,本发明通过估算当前选择的待处理的数据组所消耗的资源总量,并判断该资源总量是否满足预设条件,进而确定是否需要对该数据组中的数据进行处理,本发明在开始处理数据之前,考虑到处理数据所消耗的资源量,使得线程有选择性地处理数据,合理利用了资源,减少了线程在处理数据过程中的资源消耗,提高了系统处理数据的效率。
较佳地,估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,包括:
在第一次处理该数据组中任一数据结束时,并确定截止此时处理该组数据中每一数据所消耗的资源量;
对确定的截止此时处理该组数据中每一数据所消耗的资源量进行累加,得到资源总量。
这样,通过确定截止此时处理该组数据中每一数据所消耗的资源量,进而得到处理该组数据所消耗的资源总量,以便后续判断该资源总量是否满足预设条件。
较佳地,对于该组数据中的每一数据,确定截止此时处理该数据所消耗的资源量,包括:
获取预先设定的该数据对应的线程在处理该数据的过程中在时刻t所消耗的资源量达到的峰值M,以及处理该数据所需要消耗的时间T;其中,t小于或等于T,并且,在时刻t之前,该线程处理该数据所消耗的资源量与时间成正比;
利用该比例关系,以及t、M、T的值,确定截止此时处理该数据所消耗的资源量。
这样,考虑到每一数据对应的所述t、M、T的值是固定的,并且三者之间存在一定的比例关系,由此可以计算出处理该组数据中每一数据所消耗的资源量,进而得到处理该组数据时所消耗的资源总量。
较佳地,判断估算的资源总量是否满足预设条件的方法包括:
判断估算的资源总量是否大于预设的资源总量的最大值,如果是,则更新该组数据;否则,判断估算的资源总量是否小于预设的资源总量的最小值,如果是,则更新该组数据,否则,确定估算的资源总量满足预设条件。
这样,通过上述方法便可以选出满足条件的资源总量,进而确定满足条件的数据组,并对该组数据进行处理,实现了线程有选择性地处理数据,合理利用了线程的资源,减少了线程在处理数据过程中的资源消耗,提高系统处理数据的效率。
较佳地,该方法还包括:
当更新后的任意一组数据对应的估算出的资源总量均大于预设的资源总量的最大值时,若当前处理的数据组为首次组成的数据组时,则减少数据组中的数据个数,以及处理该组数据所需线程的个数,并重新估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,并判断该资源总量是否满足预设条件;或者,若当前处理的数据组不是首次组成的数据组,则当前处理数据结束的线程停止处理数据;
当更新后的任意一组数据对应的估算出的资源总量均小于预设的资源总量的最小值时,则从更新后的数据组中选择对应的估算出的资源总量最大的数据组进行数据处理。
这样,对于更新后的任意一组数据对应的估算出的资源总量均大于预设的资源总量的最大值,或者小于预设的资源总量的最小值的情况,本发明提出了解决方法,进而实现了线程有选择性地处理数据,合理利用了线程的资源,减少了线程在处理数据过程中的资源消耗,提高了系统处理数据的效率。
较佳地,在开始处理该组数据之后,当其中的任一数据处理结束时,重新从未处理的数据中选择一个数据,并添加到该数据组中,并估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若资源总量满足预设条件,则重新开始处理该组数据。
这样,在开始处理该组数据之后,当其中的任一数据处理结束时,通过估算当前选择的待处理的数据组所消耗的资源总量,并判断该资源总量是否满足预设条件,进而确定是否需要对该数据组中的数据进行处理,使得线程有选择性地处理数据,合理利用了资源,减少了线程在处理数据过程中的资源消耗,提高了系统处理数据的效率。
本发明实施例提供一种多线程处理数据的装置,该装置包括:
选择单元,用于对于当前采用多线程处理的数据组,当其中的任一数据处理结束时,从未处理的数据中选择一个数据,并添加到该数据组中;其中,一个线程处理一个数据;
处理单元,用于估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若所述资源总量满足预设条件,则开始处理该组数据。
较佳地,处理单元估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,具体用于:
在第一次处理该数据组中任一数据结束时,确定截止此时处理该组数据中每一数据所消耗的资源量;
对确定的截止此时处理该组数据中每一数据所消耗的资源量进行累加,得到资源总量。
这样,处理单元通过确定截止此时处理该组数据中每一数据所消耗的资源量,进而得到处理该组数据所消耗的资源总量,以便后续判断该资源总量是否满足预设条件。
较佳地,对于该组数据中的每一数据,处理单元在确定截止此时处理该数据所消耗的资源量时,具体用于:
获取预先设定的该数据对应的线程在处理该数据的过程中在时刻t所消耗的资源量达到的峰值M,以及处理该数据所需要消耗的时间T;其中,t小于或等于T,并且,在时刻t之前,该线程处理该数据所消耗的资源量与时间成正比;
利用该比例关系,以及t、M、T的值,确定截止此时处理该数据所消耗的资源量。
这样,考虑到每一数据对应的t、M、T的值是固定的,并且三者之间存在一定的比例关系,由此处理单元便可以计算出处理该组数据中每一数据所消耗的资源量,进而得到处理该组数据时所消耗的资源总量。
较佳地,处理单元在判断估算的资源总量是否满足预设条件时,具体用于:
判断估算的资源总量是否大于预设的资源总量的最大值,如果是,则更新该组数据;否则,判断估算的资源总量是否小于预设的资源总量的最小值,如果是,则更新该组数据,否则,确定估算的资源总量满足预设条件。
这样,通过上述方法处理单元便可以选出满足条件的资源总量,进而确定满足条件的数据组,并对该组数据进行处理,实现了线程有选择性地处理数据,合理利用了线程的资源,减少了线程在处理数据过程中的资源消耗,提高了系统处理数据的效率。
较佳地,处理单元还用于:
当更新后的任意一组数据对应的估算出的资源总量均大于预设的资源总量的最大值时,若当前处理的数据组为首次组成的数据组时,则减少数据组中的数据个数,以及处理该组数据所需线程的个数,并重新估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,并判断该资源总量是否满足预设条件;或者,若当前处理的数据组不是首次组成的数据组,则当前处理数据结束的线程停止处理数据;
当更新后的任意一组数据对应的估算出的资源总量均小于预设的资源总量的最小值时,则从更新后的数据组中选择对应的估算出的资源总量最大的数据组进行数据处理。
这样,处理单元还用于对于更新后的任意一组数据对应的估算出的资源总量均大于所述预设的资源总量的最大值,或者小于所述预设的资源总量的最小值的情况进行处理,进而实现了线程有选择性地处理数据,合理利用了线程的资源,减少了线程在处理数据过程中的资源消耗,提高了系统处理数据的效率。
较佳地,处理单元在开始处理该组数据之后,当其中的任一数据处理结束时,
选择单元,还用于重新从未处理的数据中选择一个数据,并添加到该数据组中;
处理单元,还用于估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若资源总量满足预设条件,则重新开始处理该组数据。
这样,处理单元在开始处理该组数据之后,当其中的任一数据处理结束时,处理单元通过估算当前选择单元选择的待处理的数据组所消耗的资源总量,并判断该资源总量是否满足预设条件,进而确定是否需要对该数据组中的数据进行处理,使得线程有选择性地处理数据,合理利用了资源,减少了线程在处理数据过程中的资源消耗,提高了系统处理数据的效率。
附图说明
图1为本发明实施例提供的一种多线程处理数据的方法流程示意图;
图2为本发明实施例提供的线程在处理数据的过程中所消耗的资源量与时间的关系示意图;
图3为本发明实施例提供的多线程处理数据的方法流程示意图;
图4为本发明实施例提供的一种多线程处理数据的装置结构示意图。
具体实施方式
现有技术中,线程对于处理的数据的选择是随机的,但实际上线程处理数据的过程中所消耗的资源量与时间存在一定的关系,本发明实施例根据该特点提供了一种多线程处理数据的方法及装置,用以实现多个线程同时对大量数据进行处理,合理利用线程的资源,减少线程的资源消耗,提高系统处理数据的效率。
如图1所示,本发明实施例提供了一种多线程处理数据的方法,该方法包括:
S11、对于当前采用多线程处理的数据组,当其中的任一数据处理结束时,从未处理的数据中选择一个数据,并添加到该数据组中;其中,一个线程处理一个数据;
S12、估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若所述资源总量满足预设条件,则开始处理该组数据。
线程在对数据组中的数据进行处理时,处理每个数据所消耗的时间不同,在步骤S12中“估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量”是指,线程在处理一组数据过程中,当存在一个数据处理结束时,并且该数据为该组数据中第一次处理结束的数据,估算此时线程处理该数据组中的数据所消耗的资源总量。
较佳地,在步骤S12中,估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量的方法包括:
在第一次处理该数据组中任一数据结束时,并确定截止此时处理该组数据中每一数据所消耗的资源量;
对确定的截止此时处理该组数据中每一数据所消耗的资源量进行累加,得到资源总量。
具体的,对于该组数据中的每一数据,确定截止此时处理该数据所消耗的资源量的方法包括:
获取预先设定的该数据对应的线程在处理该数据的过程中在时刻t所消耗的资源量达到的峰值M,以及处理该数据所需要消耗的时间T;其中,t小于或等于T,并且,在时刻t之前,该线程处理该数据所消耗的资源量与时间成正比;
利用该比例关系,以及t、M、T的值,确定截止此时处理该数据所消耗的资源量。
较佳地,在步骤S12中,判断估算的资源总量是否满足预设条件的方法包括:
判断估算的资源总量是否大于预设的资源总量的最大值,如果是,则更新该组数据;否则,判断估算的资源总量是否小于预设的资源总量的最小值,如果是,则更新该组数据,否则,确定估算的资源总量满足预设条件。
较佳地,对于更新后的任意一组数据对应的估算出的资源总量均大于预设的资源总量的最大值,或者均小于预设的资源总量的最小值的情况,本发明提供的解决方法包括:
当更新后的任意一组数据对应的估算出的资源总量均大于预设的资源总量的最大值时,若当前处理的数据组为首次组成的数据组时,则减少数据组中的数据个数,以及处理该组数据所需线程的个数,并重新估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,并判断该资源总量是否满足预设条件;或者,若当前处理的数据组不是首次组成的数据组,则当前处理数据结束的线程停止处理数据;
当更新后的任意一组数据对应的估算出的资源总量均小于预设的资源总量的最小值时,则从更新后的数据组中选择对应的估算出的资源总量最大的数据组进行数据处理。
其中,首次组成的数据组是指,线程开始处理大量数据时,第一次选择固定个数的数据组成的数据组;不是首次组成的数据组是指,线程在处理一组数据的过程中,当处理任一数据结束时,会在未处理的数据中选择一个数据,并添加到当前处理的数据组中,重新组成的数据组;
更新数据组的方法可以是:若当前处理的数据组为首次组成的数据组时,则更新该数据组包括从未选择的数据中选择一个或多个数据,并替换该组数据中相同数量的数据;若当前处理的数据组不是首次组成的数据组时,则更新该数据组包括从未处理的数据中选择一个数据,并替换该组数据中最新添加的数据。
较佳地,在步骤S12之后,当其中的任一数据处理结束时,重新从未处理的数据中选择一个数据,并添加到该数据组中,并估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若所述资源总量满足预设条件,则重新开始处理该组数据。
本发明中,处理数据的线程按照其作用分类,可以分为调度线程和处理线程,其中,调度线程用于数据组中数据的选择,更新,以及估算处理数据组中的数据所消耗的资源总量,处理线程用于对数据组的处理。
下面结合具体实例说明本发明实施例提供的一种多线程处理数据的方法。
如图2所示,线程在处理数据的过程中所消耗的资源量与时间存在一定的关系,即线程在处理数据的过程中,在时刻t之前,线程处理该数据所消耗的资源量与时间成正比,在时刻t该线程所消耗的资源量达到峰值M,线程处理该数据所需要消耗的时间为T,其中,t小于或等于T,因此,可以根据公式:Y=(x-t)>0?M,k*x,实时确定线程处理该数据所消耗的资源量,其中,x代表线程处理该数据消耗的时间,Y代表线程处理该数据经过x时所消耗的资源量,k代表在时刻t之前,线程处理该数据所消耗的资源量与时间的比例关系的比例系数,在时刻t之前,Y=k*x。针对不同的数据,对应的t、M、T、k的值不同。
如图3所示,本发明实施例提供的多线程处理数据的方法流程如下:
S31、若当前处理的数据组为首次组成的数据组时,从所有数据中选择固定数量的数据组成数据组;或者,
若当前处理的数据组不是首次组成的数据组时,从未处理的数据中选择一个数据,并添加到该数据组中;
其中,数据组中数据的个数与处理该组数据的线程的个数相同;
S32、估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量;
具体的,该步骤包括:
在第一次处理该数据组中任一数据结束时,确定截止此时处理该组数据中每一数据所消耗的资源量;
对确定的截止此时处理该组数据中每一数据所消耗的资源量进行累加,得到资源总量。
其中,对于该组数据中的每一数据,确定截止此时处理该数据所消耗的资源量的方法包括:
获取预先设定的该数据对应的线程在处理该数据的过程中在时刻t所消耗的资源量达到的峰值M,以及处理该数据所需要消耗的时间T;其中,t小于或等于T,并且,在时刻t之前,该线程处理该数据所消耗的资源量与时间成正比;
利用该比例关系,以及数据对应的t、M、T的值,确定截止此时处理该数据所消耗的资源量。
例如:以8个线程同时处理一批数据为例,线程处理数据所消耗的时间如表1所示;
表1
线程编号 | 数据编号 | 时间T |
1 | 2003 | 120秒 |
2 | 2004 | 240秒 |
3 | 2005 | 110秒 |
4 | 2006 | 90秒 |
5 | 2007 | 50秒 |
6 | 2008 | 85秒 |
7 | 2009 | 150秒 |
8 | 2010 | 80秒 |
假设线程1至线程8同时开始处理由数据2003至数据2010组成的数据组,由表1可知,线程5处理数据2007首先结束,即在处理该组数据经过50秒时,线程第一次处理该数据组中的数据结束,在50秒时,线程5处理数据2007结束会释放大部分数据2007的资源,因此估算截止到50秒,并且线程5还未释放数据2007的内存资源时,线程1至线程8所消耗的资源总量,具体估算资源总量的过程如下:
在50秒时,获取预先设定每个数据对应的t、M、T的值,并根据下列公式确定截止此时处理该组数据中每一数据所消耗的内存资源量:
Y=(x-t)>0?M,k*x
该公式表示:线程在处理数据的过程中,在时刻t之前,线程处理该数据所消耗的资源量Y与时间x成正比,Y=k*x,其中k代表在时刻t之前,线程处理该数据所消耗的资源量与时间的比例关系的比例系数,在时刻t该线程所消耗的资源量达到峰值M,线程处理该数据所需要消耗的时间为T,其中,t小于或等于T;
对于数据2003,假设数据2003对应的t=40秒,因此在50秒时,线程1处理数据2003所消耗的资源量为M;同理,分别确定线程处理数据2004至数据2010每一数据所消耗的资源量,并将确定的处理每一数据所消耗的资源量进行累加,得到资源总量。
S33、判断估算的资源总量是否大于预设的资源总量的最大值;
如果是,则执行步骤S34;否则,执行步骤S35;
S34、更新该组数据;
较佳地,更新数据组的方法包括:若当前处理的数据组为首次组成的数据组,则更新该数据组的方法包括从未选择的数据中选择一个或多个数据,并替换该组数据中相同数量的数据;若当前处理的数据组不是首次组成的数据组,则更新该数据组的方法包括从未处理的数据中选择一个数据,并替换该组数据中最新添加的数据;其中,所选择的一个或多个数据为处理该数据时所消耗的资源量较少的数据,该组数据中被替换的数据为处理该数据时所消耗的资源量较多的数据。
S35、判断估算的资源总量是否小于预设的资源总量的最小值;
如果是,则执行步骤S36;否则,执行步骤S37;
S36、更新该组数据;
较佳地,更新数据组的方法包括:若当前处理的数据组为首次组成的数据组,则更新该数据组的方法包括从未选择的数据中选择一个或多个数据,并替换该组数据中相同数量的数据;若当前处理的数据组不是首次组成的数据组,则更新该数据组的方法包括从未处理的数据中选择一个数据,并替换该组数据中最新添加的数据;其中,所选择的一个或多个数据为处理该数据时所消耗的资源量较多的数据,该组数据中被替换的数据为处理该数据时所消耗的资源量较少的数据。
S37、线程对满足预设条件的资源总量对应的数据组进行处理;
其中,若当前处理的数据组为首次组成的数据组时,多个线程开始处理该数据组,线程的个数与该数据组中数据的个数相同,一个线程处理一个数据;若当前处理的数据组不是首次组成的数据组时,由当前处于空闲状态的线程,即在处理更新前的数据组中处理数据结束的线程,开始处理最新添加到当前处理的数据组中的数据,除当前处于空闲状态的线程之外的线程继续对当前处理的数据进行处理。
S38、当其中的任一数据处理结束时,判断是否有未处理的数据;
如果是,则执行步骤S31;否则,执行步骤S39;
S39、继续对该组数据中未完成处理的数据进行处理。
继续表1中的例子,线程5在处理完数据2007后,选择数据2011添加到该数据组中,如表2所示:
表2
由表2可知,在80秒时,线程8处理数据2010首先结束,因此需要估算截止到80秒时,线程处理该组数据所消耗的资源总量;
在步骤S32中,获取每个数据对应的t、M、T的值的方法可以有多种,较佳地可以根据历史数据获取t、M、T的值。
在步骤S33至步骤S36中,当更新后的任意一组数据对应的估算出的资源总量均大于预设的资源总量的最大值时,若当前处理的数据组为首次组成的数据组时,则减少数据组中的数据个数,以及处理该组数据所需线程的个数,以便减少线程在处理数据组的过程中所消耗的资源总量,并重新估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,并判断该资源总量是否满足预设条件;或者,若当前处理的数据组不是首次组成的数据组,则当前处理数据结束的线程停止处理数据;
当更新后的任意一组数据对应的估算出的资源总量均小于预设的资源总量的最小值时,则从更新后的数据组中选择对应的估算出的资源总量最大的数据组进行数据处理。
如图4所示,本发明实施例提供一种多线程处理数据的装置,该装置包括:
选择单元41,用于对于当前采用多线程处理的数据组,当其中的任一数据处理结束时,从未处理的数据中选择一个数据,并添加到该数据组中;其中,一个线程处理一个数据;
处理单元42,用于估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若所述资源总量满足预设条件,则开始处理该组数据。
较佳地,处理单元42估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,具体用于:
在第一次处理该数据组中任一数据结束时,确定截止此时处理该组数据中每一数据所消耗的资源量;
对确定的截止此时处理该组数据中每一数据所消耗的资源量进行累加,得到资源总量。
较佳地,对于该组数据中的每一数据,处理单元42在确定截止此时处理该数据所消耗的资源量时,具体用于:
获取预先设定的该数据对应的线程在处理该数据的过程中在时刻t所消耗的资源量达到的峰值M,以及处理该数据所需要消耗的时间T;其中,t小于或等于T,并且,在时刻t之前,该线程处理该数据所消耗的资源量与时间成正比;
利用该比例关系,以及数据对应的t、M、T的值,确定截止此时处理该数据所消耗的资源量。
较佳地,处理单元42在判断估算的资源总量是否满足预设条件时,具体用于:
判断估算的资源总量是否大于预设的资源总量的最大值,如果是,则更新该组数据;否则,判断估算的资源总量是否小于预设的资源总量的最小值,如果是,则更新该组数据,否则,确定估算的资源总量满足预设条件。
较佳地,处理单元42还用于:
当更新后的任意一组数据对应的估算出的资源总量均大于预设的资源总量的最大值时,若当前处理的数据组为首次组成的数据组时,则减少数据组中的数据个数,以及处理该组数据所需线程的个数,并重新估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,并判断该资源总量是否满足预设条件;或者,若当前处理的数据组不是首次组成的数据组,则当前处理数据结束的线程停止处理数据;
当更新后的任意一组数据对应的估算出的资源总量均小于预设的资源总量的最小值时,则从更新后的数据组中选择对应的估算出的资源总量最大的数据组进行数据处理。
较佳地,处理单元42在开始处理该组数据之后,当其中的任一数据处理结束时,
选择单元41,还用于重新从未处理的数据中选择一个数据,并添加到该数据组中;
处理单元42,还用于估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若资源总量满足预设条件,则重新开始处理该组数据。
具体的,选择单元41和处理单元42可以由处理器等实体实现,本发明不局限于实现这些单元的实体。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种多线程处理数据的方法,其特征在于,该方法包括:
对于当前采用多线程处理的数据组,当其中的任一数据处理结束时,从未处理的数据中选择一个数据,并添加到该数据组中;其中,一个线程处理一个数据;
估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若所述资源总量满足预设条件,则开始处理该组数据;
其中,所述估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,包括:
在第一次处理该数据组中任一数据结束时,确定截止此时处理该组数据中每一数据所消耗的资源量;
对确定的截止此时处理该组数据中每一数据所消耗的资源量进行累加,得到资源总量;
其中,对于该组数据中的每一数据,确定截止此时处理该数据所消耗的资源量,包括:
获取预先设定的该数据对应的线程在处理该数据的过程中在时刻t所消耗的资源量达到的峰值M,以及处理该数据所需要消耗的时间T;其中,t小于或等于T,并且,在时刻t之前,该线程处理该数据所消耗的资源量与时间成正比;
利用该线程处理该数据所消耗的资源量与时间成正比的比例关系,以及所述t、M、T的值,确定截止此时处理该数据所消耗的资源量。
2.如权利要求1所述的方法,其特征在于,判断估算的所述资源总量是否满足预设条件的方法包括:
判断估算的所述资源总量是否大于预设的资源总量的最大值,如果是,则更新该组数据;否则,判断估算的所述资源总量是否小于预设的资源总量的最小值,如果是,则更新该组数据,否则,确定估算的所述资源总量满足预设条件。
3.如权利要求2所述的方法,其特征在于,该方法还包括:
当更新后的任意一组数据对应的估算出的资源总量均大于所述预设的资源总量的最大值时,若当前处理的数据组为首次组成的数据组时,则减少数据组中的数据个数,以及处理该组数据所需线程的个数,并重新估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,并判断该资源总量是否满足预设条件;或者,若当前处理的数据组不是首次组成的数据组,则当前处理数据结束的线程停止处理数据;
当更新后的任意一组数据对应的估算出的资源总量均小于所述预设的资源总量的最小值时,则从更新后的数据组中选择对应的估算出的资源总量最大的数据组进行数据处理。
4.如权利要求1所述的方法,其特征在于,在开始处理该组数据之后,当其中的任一数据处理结束时,重新从未处理的数据中选择一个数据,并添加到该数据组中,并估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若所述资源总量满足预设条件,则重新开始处理该组数据。
5.一种多线程处理数据的装置,其特征在于,该装置包括:
选择单元,用于对于当前采用多线程处理的数据组,当其中的任一数据处理结束时,从未处理的数据中选择一个数据,并添加到该数据组中;其中,一个线程处理一个数据;
处理单元,用于估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若所述资源总量满足预设条件,则开始处理该组数据;
其中,所述处理单元估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,具体用于:
在第一次处理该数据组中任一数据结束时,确定截止此时处理该组数据中每一数据所消耗的资源量;
对确定的截止此时处理该组数据中每一数据所消耗的资源量进行累加,得到资源总量;
其中,对于该组数据中的每一数据,所述处理单元在确定截止此时处理该数据所消耗的资源量时,具体用于:
获取预先设定的该数据对应的线程在处理该数据的过程中在时刻t所消耗的资源量达到的峰值M,以及处理该数据所需要消耗的时间T;其中,t小于或等于T,并且,在时刻t之前,该线程处理该数据所消耗的资源量与时间成正比;
利用该线程处理该数据所消耗的资源量与时间成正比的比例关系,以及所述t、M、T的值,确定截止此时处理该数据所消耗的资源量。
6.如权利要求5所述的装置,其特征在于,所述处理单元在判断估算的所述资源总量是否满足预设条件时,具体用于:
判断估算的所述资源总量是否大于预设的资源总量的最大值,如果是,则更新该组数据;否则,判断估算的所述资源总量是否小于预设的资源总量的最小值,如果是,则更新该组数据,否则,确定估算的所述资源总量满足预设条件。
7.如权利要求6所述的装置,其特征在于,所述处理单元还用于:
当更新后的任意一组数据对应的估算出的资源总量均大于所述预设的资源总量的最大值时,若当前处理的数据组为首次组成的数据组时,则减少数据组中的数据个数,以及处理该组数据所需线程的个数,并重新估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,并判断该资源总量是否满足预设条件;或者,若当前处理的数据组不是首次组成的数据组,则当前处理数据结束的线程停止处理数据;
当更新后的任意一组数据对应的估算出的资源总量均小于所述预设的资源总量的最小值时,则从更新后的数据组中选择对应的估算出的资源总量最大的数据组进行数据处理。
8.如权利要求5所述的装置,其特征在于,所述处理单元在开始处理该组数据之后,当其中的任一数据处理结束时,
所述选择单元,还用于重新从未处理的数据中选择一个数据,并添加到该数据组中;
所述处理单元,还用于估算在第一次处理该数据组中任一数据结束时,处理该数据组中的数据所消耗的资源总量,若所述资源总量满足预设条件,则重新开始处理该组数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410100610.9A CN103885837B (zh) | 2014-03-18 | 2014-03-18 | 一种多线程处理数据的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410100610.9A CN103885837B (zh) | 2014-03-18 | 2014-03-18 | 一种多线程处理数据的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103885837A CN103885837A (zh) | 2014-06-25 |
CN103885837B true CN103885837B (zh) | 2017-07-14 |
Family
ID=50954745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410100610.9A Active CN103885837B (zh) | 2014-03-18 | 2014-03-18 | 一种多线程处理数据的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103885837B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108279977B (zh) * | 2017-12-29 | 2021-12-10 | 深圳市德兰明海科技有限公司 | 一种基于rtos的数据处理方法、装置和控制器 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1538297A (zh) * | 2003-04-16 | 2004-10-20 | ��ʿͨ��ʽ���� | 用于调节系统资源的使用的装置及其方法 |
JP3932965B2 (ja) * | 2002-04-22 | 2007-06-20 | 日本電気株式会社 | マルチスレッドプログラム |
CN101056264A (zh) * | 2007-04-25 | 2007-10-17 | 华为技术有限公司 | 流量控制的方法和业务处理系统 |
CN102053859A (zh) * | 2009-11-09 | 2011-05-11 | 中国移动通信集团甘肃有限公司 | 批量数据处理的方法与装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7882505B2 (en) * | 2005-03-25 | 2011-02-01 | Oracle America, Inc. | Method and apparatus for switching between per-thread and per-processor resource pools in multi-threaded programs |
-
2014
- 2014-03-18 CN CN201410100610.9A patent/CN103885837B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3932965B2 (ja) * | 2002-04-22 | 2007-06-20 | 日本電気株式会社 | マルチスレッドプログラム |
CN1538297A (zh) * | 2003-04-16 | 2004-10-20 | ��ʿͨ��ʽ���� | 用于调节系统资源的使用的装置及其方法 |
CN101056264A (zh) * | 2007-04-25 | 2007-10-17 | 华为技术有限公司 | 流量控制的方法和业务处理系统 |
CN102053859A (zh) * | 2009-11-09 | 2011-05-11 | 中国移动通信集团甘肃有限公司 | 批量数据处理的方法与装置 |
Also Published As
Publication number | Publication date |
---|---|
CN103885837A (zh) | 2014-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liaw et al. | Hypersched: Dynamic resource reallocation for model development on a deadline | |
US20140188532A1 (en) | Multitenant Database Placement with a Cost Based Query Scheduler | |
CN103631801B (zh) | 一种提供商品信息的方法及装置 | |
JP5134601B2 (ja) | 生産スケジュール作成装置 | |
CN103257896B (zh) | 一种云环境下的Max-D作业调度方法 | |
RU2014136718A (ru) | Способ и система для управления экземплярами игры | |
CN110389822A (zh) | 执行任务的节点调度方法、装置和服务器 | |
US8973000B2 (en) | Determining multiprogramming levels | |
CN114518945A (zh) | 一种资源调度方法、装置、设备及存储介质 | |
CN103885837B (zh) | 一种多线程处理数据的方法及装置 | |
CN106909454A (zh) | 一种规则处理方法和设备 | |
CN111105133A (zh) | 生产调度方法、计算机设备以及存储介质 | |
CN109658187A (zh) | 推荐云服务商的方法、装置、存储介质及电子设备 | |
WO2020211529A1 (zh) | 一种服务端的派工方法、装置、计算机设备及存储介质 | |
CN109347982A (zh) | 一种数据中心的调度方法及装置 | |
CN109062683A (zh) | 主机资源分配的方法、装置及计算机可读存储介质 | |
CN106302241A (zh) | 在线消息队列调度方法和装置 | |
CN113452546A (zh) | 深度学习训练通信的动态服务质量管理 | |
CN110175073B (zh) | 数据交换作业的调度方法、发送方法、装置及相关设备 | |
CN107589980A (zh) | 一种云计算资源的调度方法 | |
CN108900865B (zh) | 服务器、转码任务的调度方法及执行方法 | |
JP2017091001A (ja) | 仮想インスタンス配置位置決定装置、仮想インスタンス配置位置決定方法および仮想インスタンス配置位置決定プログラム | |
CN110348916B (zh) | 用户留存度计算方法及装置 | |
CN111857988B (zh) | 一种基于任务管理系统的容器任务调度方法及装置 | |
CN112130979B (zh) | 调度任务及训练神经网络模型的方法、装置、终端和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |