一種多線程處理數(shù)據(jù)的方法及裝置制造方法
【專利摘要】本發(fā)明提供一種多線程處理數(shù)據(jù)的方法及裝置,用以實現(xiàn)多個線程同時對大量數(shù)據(jù)進行處理,合理利用線程的資源,減少線程的資源消耗,提高系統(tǒng)處理數(shù)據(jù)的效率。本發(fā)明方法包括:對于當前采用多線程處理的數(shù)據(jù)組,當其中的任一數(shù)據(jù)處理結束時,從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中;其中,一個線程處理一個數(shù)據(jù);估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若所述資源總量滿足預設條件,則開始處理該組數(shù)據(jù)。
【專利說明】一種多線程處理數(shù)據(jù)的方法及裝置
【技術領域】
[0001]本發(fā)明涉及通信領域,尤其涉及一種多線程處理數(shù)據(jù)的方法及裝置。
【背景技術】
[0002]基于全球信息系統(tǒng)(Global Information System, GIS)的呼叫詳細記錄-測量報告(Call Detail Log-Measurement Report, Q)L_MR)海量智能分析系統(tǒng),可以通過對無線網(wǎng)絡控制器(Radio Network Controller, RNC)的⑶L-MR數(shù)據(jù)分析,及時發(fā)現(xiàn)網(wǎng)絡隱性問題,快速規(guī)避網(wǎng)絡潛在風險,保證網(wǎng)絡穩(wěn)定健康的發(fā)展,該分析系統(tǒng)的應用有效提升了用戶終端的服務體驗和品牌忠誠度,降低了網(wǎng)絡優(yōu)化成本。
[0003]⑶L-MR海量智能分析系統(tǒng)對RNC的⑶L-MR數(shù)據(jù)的分析過程包括以下兩部分:
[0004]第一次分析過程:解析CDL-MR文件中的數(shù)據(jù),并將解析出來的數(shù)據(jù)存入數(shù)據(jù)庫;
[0005]第二次分析過程:從數(shù)據(jù)庫中讀出CDL-MR文件中的數(shù)據(jù),并對該數(shù)據(jù)進行統(tǒng)計與分析。
[0006]在上述第二次分析過程中,為了提高系統(tǒng)的處理速度,通常采用多個線程對數(shù)據(jù)進行處理;一般的實現(xiàn)方法為:一個線程處理一個RNC的數(shù)據(jù),同時對線程的總數(shù)進行限制,或者采用線程池技術,所謂線程池是指一種多線程的處理形式,在處理過程中將任務添加到隊列,然后在創(chuàng)建線程后自動啟動隊列中的任務,并按照任務的優(yōu)先級對任務進行處理。例如:當前有20個RNC的數(shù)據(jù)需要進行處理,共配置8個線程,則這8個線程首先對20個RNC的數(shù)據(jù)中的8個RNC的數(shù)據(jù)進行處理,其他RNC的數(shù)據(jù)需要等待,如果有線程對某一數(shù)據(jù)處理完畢,則該線程從剩下的RNC的數(shù)據(jù)中隨機選擇一個數(shù)據(jù)進行處理。
[0007]但在⑶L-MR海量智能分析系統(tǒng)采用多個線程同時處理數(shù)據(jù)的過程中,由于處理的數(shù)據(jù)量比較大,并且在處理過程中,各個線程需要存儲大量的數(shù)據(jù),如累計計算各種性能指標,內存消耗隨著時間的推移,逐漸增加,此時可能會導致系統(tǒng)的內存不夠,使得系統(tǒng)的處理效率下降。內存消耗的增加所導致的問題主要體現(xiàn)在以下兩方面:
[0008]內存消耗的增加導致系統(tǒng)性能的下降,使得系統(tǒng)的處理效率減低;
[0009]由于申請的內存有限,例如對于32位機器的應用程序,一個進程申請的內存不能超過2G,隨著內存消耗的逐漸增加,當消耗的內存達到上限時,便會導致線程申請內存失敗,進而線程將無法繼續(xù)對數(shù)據(jù)進行處理。
[0010]綜上所述,CDL-MR海量智能分析系統(tǒng)在采用多個線程同時處理數(shù)據(jù)的過程中,由于處理的數(shù)據(jù)量比較大,并且線程選擇所要處理的數(shù)據(jù)是隨機的,沒有考慮到處理該數(shù)據(jù)所消耗的內存資源量,使得對線程的內存資源使用不合理,這樣將會消耗大量的內存資源,導致系統(tǒng)性能的下降,系統(tǒng)的處理效率降低。
【發(fā)明內容】
[0011]本發(fā)明提供一種多線程處理數(shù)據(jù)的方法及裝置,用以實現(xiàn)多個線程同時對大量數(shù)據(jù)進行處理,合理利用線程的資源,減少線程的資源消耗,提高系統(tǒng)處理數(shù)據(jù)的效率。[0012]本發(fā)明實施例提供一種多線程處理數(shù)據(jù)的方法,該方法包括:
[0013]對于當前采用多線程處理的數(shù)據(jù)組,當其中的任一數(shù)據(jù)處理結束時,從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中;其中,一個線程處理一個數(shù)據(jù);
[0014]估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若所述資源總量滿足預設條件,則開始處理該組數(shù)據(jù)。
[0015]從上述方法可以看出,本發(fā)明通過估算當前選擇的待處理的數(shù)據(jù)組所消耗的資源總量,并判斷該資源總量是否滿足預設條件,進而確定是否需要對該數(shù)據(jù)組中的數(shù)據(jù)進行處理,本發(fā)明在開始處理數(shù)據(jù)之前,考慮到處理數(shù)據(jù)所消耗的資源量,使得線程有選擇性地處理數(shù)據(jù),合理利用了資源,減少了線程在處理數(shù)據(jù)過程中的資源消耗,提高了系統(tǒng)處理數(shù)據(jù)的效率。
[0016]較佳地,估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,包括:
[0017]在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,并確定截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量;
[0018]對確定的截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量進行累加,得到資源總量。
[0019]這樣,通過確定截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量,進而得到處理該組數(shù)據(jù)所消耗的資源總量,以便后續(xù)判斷該資源總量是否滿足預設條件。
[0020]較佳地,對于該組數(shù)據(jù)中的每一數(shù)據(jù),確定截止此時處理該數(shù)據(jù)所消耗的資源量,包括:
[0021]獲取預先設定的該數(shù)據(jù)對應的線程在處理該數(shù)據(jù)的過程中在時刻t所消耗的資源量達到的峰值M,以及處理該數(shù)據(jù)所需要消耗的時間T ;其中,t小于或等于T,并且,在時刻t之前,該線程處理該數(shù)據(jù)所消耗的資源量與時間成正比;
[0022]利用該比例關系,以及t、M、T的值,確定截止此時處理該數(shù)據(jù)所消耗的資源量。
[0023]這樣,考慮到每一數(shù)據(jù)對應的所述t、M、T的值是固定的,并且三者之間存在一定的比例關系,由此可以計算出處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量,進而得到處理該組數(shù)據(jù)時所消耗的資源總量。
[0024]較佳地,判斷估算的資源總量是否滿足預設條件的方法包括:
[0025]判斷估算的資源總量是否大于預設的資源總量的最大值,如果是,則更新該組數(shù)據(jù);否則,判斷估算的資源總量是否小于預設的資源總量的最小值,如果是,則更新該組數(shù)據(jù),否則,確定估算的資源總量滿足預設條件。
[0026]這樣,通過上述方法便可以選出滿足條件的資源總量,進而確定滿足條件的數(shù)據(jù)組,并對該組數(shù)據(jù)進行處理,實現(xiàn)了線程有選擇性地處理數(shù)據(jù),合理利用了線程的資源,減少了線程在處理數(shù)據(jù)過程中的資源消耗,提高系統(tǒng)處理數(shù)據(jù)的效率。
[0027]較佳地,該方法還包括:
[0028]當更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均大于預設的資源總量的最大值時,若當前處理的數(shù)據(jù)組為首次組成的數(shù)據(jù)組時,則減少數(shù)據(jù)組中的數(shù)據(jù)個數(shù),以及處理該組數(shù)據(jù)所需線程的個數(shù),并重新估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,并判斷該資源總量是否滿足預設條件;或者,若當前處理的數(shù)據(jù)組不是首次組成的數(shù)據(jù)組,則當前處理數(shù)據(jù)結束的線程停止處理數(shù)據(jù);
[0029]當更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均小于預設的資源總量的最小值時,則從更新后的數(shù)據(jù)組中選擇對應的估算出的資源總量最大的數(shù)據(jù)組進行數(shù)據(jù)處理。
[0030]這樣,對于更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均大于預設的資源總量的最大值,或者小于預設的資源總量的最小值的情況,本發(fā)明提出了解決方法,進而實現(xiàn)了線程有選擇性地處理數(shù)據(jù),合理利用了線程的資源,減少了線程在處理數(shù)據(jù)過程中的資源消耗,提高了系統(tǒng)處理數(shù)據(jù)的效率。
[0031]較佳地,在開始處理該組數(shù)據(jù)之后,當其中的任一數(shù)據(jù)處理結束時,重新從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中,并估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若資源總量滿足預設條件,則重新開始處理該組數(shù)據(jù)。
[0032]這樣,在開始處理該組數(shù)據(jù)之后,當其中的任一數(shù)據(jù)處理結束時,通過估算當前選擇的待處理的數(shù)據(jù)組所消耗的資源總量,并判斷該資源總量是否滿足預設條件,進而確定是否需要對該數(shù)據(jù)組中的數(shù)據(jù)進行處理,使得線程有選擇性地處理數(shù)據(jù),合理利用了資源,減少了線程在處理數(shù)據(jù)過程中的資源消耗,提高了系統(tǒng)處理數(shù)據(jù)的效率。
[0033]本發(fā)明實施例提供一種多線程處理數(shù)據(jù)的裝置,該裝置包括:
[0034]選擇單元,用于對于當前采用多線程處理的數(shù)據(jù)組,當其中的任一數(shù)據(jù)處理結束時,從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中;其中,一個線程處理一個數(shù)據(jù);
[0035]處理單元,用于估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若所述資源總量滿足預設條件,則開始處理該組數(shù)據(jù)。
[0036]較佳地,處理單元估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,具體用于:
[0037]在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,確定截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量;
[0038]對確定的截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量進行累加,得到資源總量。
[0039]這樣,處理單元通過確定截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量,進而得到處理該組數(shù)據(jù)所消耗的資源總量,以便后續(xù)判斷該資源總量是否滿足預設條件。
[0040]較佳地,對于該組數(shù)據(jù)中的每一數(shù)據(jù),處理單元在確定截止此時處理該數(shù)據(jù)所消耗的資源量時,具體用于:
[0041]獲取預先設定的該數(shù)據(jù)對應的線程在處理該數(shù)據(jù)的過程中在時刻t所消耗的資源量達到的峰值M,以及處理該數(shù)據(jù)所需要消耗的時間T ;其中,t小于或等于T,并且,在時刻t之前,該線程處理該數(shù)據(jù)所消耗的資源量與時間成正比;
[0042]利用該比例關系,以及t、M、T的值,確定截止此時處理該數(shù)據(jù)所消耗的資源量。
[0043]這樣,考慮到每一數(shù)據(jù)對應的t、M、T的值是固定的,并且三者之間存在一定的比例關系,由此處理單元便可以計算出處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量,進而得到處理該組數(shù)據(jù)時所消耗的資源總量。[0044]較佳地,處理單元在判斷估算的資源總量是否滿足預設條件時,具體用于:
[0045]判斷估算的資源總量是否大于預設的資源總量的最大值,如果是,則更新該組數(shù)據(jù);否則,判斷估算的資源總量是否小于預設的資源總量的最小值,如果是,則更新該組數(shù)據(jù),否則,確定估算的資源總量滿足預設條件。
[0046]這樣,通過上述方法處理單元便可以選出滿足條件的資源總量,進而確定滿足條件的數(shù)據(jù)組,并對該組數(shù)據(jù)進行處理,實現(xiàn)了線程有選擇性地處理數(shù)據(jù),合理利用了線程的資源,減少了線程在處理數(shù)據(jù)過程中的資源消耗,提高了系統(tǒng)處理數(shù)據(jù)的效率。
[0047]較佳地,處理單元還用于:
[0048]當更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均大于預設的資源總量的最大值時,若當前處理的數(shù)據(jù)組為首次組成的數(shù)據(jù)組時,則減少數(shù)據(jù)組中的數(shù)據(jù)個數(shù),以及處理該組數(shù)據(jù)所需線程的個數(shù),并重新估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,并判斷該資源總量是否滿足預設條件;或者,若當前處理的數(shù)據(jù)組不是首次組成的數(shù)據(jù)組,則當前處理數(shù)據(jù)結束的線程停止處理數(shù)據(jù);
[0049]當更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均小于預設的資源總量的最小值時,則從更新后的數(shù)據(jù)組中選擇對應的估算出的資源總量最大的數(shù)據(jù)組進行數(shù)據(jù)處理。
[0050]這樣,處理單元還用于對于更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均大于所述預設的資源總量的最大值,或者小于所述預設的資源總量的最小值的情況進行處理,進而實現(xiàn)了線程有選擇性地處理數(shù)據(jù),合理利用了線程的資源,減少了線程在處理數(shù)據(jù)過程中的資源消耗,提高了系統(tǒng)處理數(shù)據(jù)的效率。
[0051]較佳地,處理單元在開始處理該組數(shù)據(jù)之后,當其中的任一數(shù)據(jù)處理結束時,
[0052]選擇單元,還用于重新從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中;
[0053]處理單元,還用于估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若資源總量滿足預設條件,則重新開始處理該組數(shù)據(jù)。
[0054]這樣,處理單元在開始處理該組數(shù)據(jù)之后,當其中的任一數(shù)據(jù)處理結束時,處理單元通過估算當前選擇單元選擇的待處理的數(shù)據(jù)組所消耗的資源總量,并判斷該資源總量是否滿足預設條件,進而確定是否需要對該數(shù)據(jù)組中的數(shù)據(jù)進行處理,使得線程有選擇性地處理數(shù)據(jù),合理利用了資源,減少了線程在處理數(shù)據(jù)過程中的資源消耗,提高了系統(tǒng)處理數(shù)據(jù)的效率。
【專利附圖】
【附圖說明】
[0055]圖1為本發(fā)明實施例提供的一種多線程處理數(shù)據(jù)的方法流程示意圖;
[0056]圖2為本發(fā)明實施例提供的線程在處理數(shù)據(jù)的過程中所消耗的資源量與時間的關系不意圖;
[0057]圖3為本發(fā)明實施例提供的多線程處理數(shù)據(jù)的方法流程示意圖;
[0058]圖4為本發(fā)明實施例提供的一種多線程處理數(shù)據(jù)的裝置結構示意圖。
【具體實施方式】
[0059]現(xiàn)有技術中,線程對于處理的數(shù)據(jù)的選擇是隨機的,但實際上線程處理數(shù)據(jù)的過程中所消耗的資源量與時間存在一定的關系,本發(fā)明實施例根據(jù)該特點提供了一種多線程處理數(shù)據(jù)的方法及裝置,用以實現(xiàn)多個線程同時對大量數(shù)據(jù)進行處理,合理利用線程的資源,減少線程的資源消耗,提高系統(tǒng)處理數(shù)據(jù)的效率。
[0060]如圖1所示,本發(fā)明實施例提供了一種多線程處理數(shù)據(jù)的方法,該方法包括:
[0061]S11、對于當前采用多線程處理的數(shù)據(jù)組,當其中的任一數(shù)據(jù)處理結束時,從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中;其中,一個線程處理一個數(shù)據(jù);
[0062]S12、估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若所述資源總量滿足預設條件,則開始處理該組數(shù)據(jù)。
[0063]線程在對數(shù)據(jù)組中的數(shù)據(jù)進行處理時,處理每個數(shù)據(jù)所消耗的時間不同,在步驟S12中“估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量”是指,線程在處理一組數(shù)據(jù)過程中,當存在一個數(shù)據(jù)處理結束時,并且該數(shù)據(jù)為該組數(shù)據(jù)中第一次處理結束的數(shù)據(jù),估算此時線程處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量。
[0064]較佳地,在步驟S12中,估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量的方法包括:
[0065]在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,并確定截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量;
[0066]對確定的截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量進行累加,得到資源總量。
[0067]具體的,對于該組數(shù)據(jù)中的每一數(shù)據(jù),確定截止此時處理該數(shù)據(jù)所消耗的資源量的方法包括:
[0068]獲取預先設定的該數(shù)據(jù)對應的線程在處理該數(shù)據(jù)的過程中在時刻t所消耗的資源量達到的峰值M,以及處理該數(shù)據(jù)所需要消耗的時間T ;其中,t小于或等于T,并且,在時刻t之前,該線程處理該數(shù)據(jù)所消耗的資源量與時間成正比;
[0069]利用該比例關系,以及t、M、T的值,確定截止此時處理該數(shù)據(jù)所消耗的資源量。
[0070]較佳地,在步驟S12中,判斷估算的資源總量是否滿足預設條件的方法包括:
[0071]判斷估算的資源總量是否大于預設的資源總量的最大值,如果是,則更新該組數(shù)據(jù);否則,判斷估算的資源總量是否小于預設的資源總量的最小值,如果是,則更新該組數(shù)據(jù),否則,確定估算的資源總量滿足預設條件。
[0072]較佳地,對于更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均大于預設的資源總量的最大值,或者均小于預設的資源總量的最小值的情況,本發(fā)明提供的解決方法包括:
[0073]當更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均大于預設的資源總量的最大值時,若當前處理的數(shù)據(jù)組為首次組成的數(shù)據(jù)組時,則減少數(shù)據(jù)組中的數(shù)據(jù)個數(shù),以及處理該組數(shù)據(jù)所需線程的個數(shù),并重新估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,并判斷該資源總量是否滿足預設條件;或者,若當前處理的數(shù)據(jù)組不是首次組成的數(shù)據(jù)組,則當前處理數(shù)據(jù)結束的線程停止處理數(shù)據(jù);
[0074]當更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均小于預設的資源總量的最小值時,則從更新后的數(shù)據(jù)組中選擇對應的估算出的資源總量最大的數(shù)據(jù)組進行數(shù)據(jù)處理。
[0075]其中,首次組成的數(shù)據(jù)組是指,線程開始處理大量數(shù)據(jù)時,第一次選擇固定個數(shù)的數(shù)據(jù)組成的數(shù)據(jù)組;不是首次組成的數(shù)據(jù)組是指,線程在處理一組數(shù)據(jù)的過程中,當處理任一數(shù)據(jù)結束時,會在未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到當前處理的數(shù)據(jù)組中,重新組成的數(shù)據(jù)組;
[0076]更新數(shù)據(jù)組的方法可以是:若當前處理的數(shù)據(jù)組為首次組成的數(shù)據(jù)組時,則更新該數(shù)據(jù)組包括從未選擇的數(shù)據(jù)中選擇一個或多個數(shù)據(jù),并替換該組數(shù)據(jù)中相同數(shù)量的數(shù)據(jù);若當前處理的數(shù)據(jù)組不是首次組成的數(shù)據(jù)組時,則更新該數(shù)據(jù)組包括從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并替換該組數(shù)據(jù)中最新添加的數(shù)據(jù)。
[0077]較佳地,在步驟S12之后,當其中的任一數(shù)據(jù)處理結束時,重新從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中,并估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若所述資源總量滿足預設條件,則重新開始處理該組數(shù)據(jù)。
[0078]本發(fā)明中,處理數(shù)據(jù)的線程按照其作用分類,可以分為調度線程和處理線程,其中,調度線程用于數(shù)據(jù)組中數(shù)據(jù)的選擇,更新,以及估算處理數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,處理線程用于對數(shù)據(jù)組的處理。
[0079]下面結合具體實例說明本發(fā)明實施例提供的一種多線程處理數(shù)據(jù)的方法。
[0080]如圖2所示,線程在處理數(shù)據(jù)的過程中所消耗的資源量與時間存在一定的關系,即線程在處理數(shù)據(jù)的過程中,在時刻t之前,線程處理該數(shù)據(jù)所消耗的資源量與時間成正t匕,在時刻t該線程所消耗的資源量達到峰值M,線程處理該數(shù)據(jù)所需要消耗的時間為T,其中,t小于或等于T,因此,可以根據(jù)公式:Y=(x-t)>0?M,k*x,實時確定線程處理該數(shù)據(jù)所消耗的資源量,其中,X代表線程處理該數(shù)據(jù)消耗的時間,Y代表線程處理該數(shù)據(jù)經(jīng)過X時所消耗的資源量,k代表在時刻t 之前,線程處理該數(shù)據(jù)所消耗的資源量與時間的比例關系的比例系數(shù),在時刻t之前,Y=k*x。針對不同的數(shù)據(jù),對應的t、M、T、k的值不同。
[0081]如圖3所示,本發(fā)明實施例提供的多線程處理數(shù)據(jù)的方法流程如下:
[0082]S31、若當前處理的數(shù)據(jù)組為首次組成的數(shù)據(jù)組時,從所有數(shù)據(jù)中選擇固定數(shù)量的數(shù)據(jù)組成數(shù)據(jù)組;或者,
[0083]若當前處理的數(shù)據(jù)組不是首次組成的數(shù)據(jù)組時,從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中;
[0084]其中,數(shù)據(jù)組中數(shù)據(jù)的個數(shù)與處理該組數(shù)據(jù)的線程的個數(shù)相同;
[0085]S32、估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量;
[0086]具體的,該步驟包括:
[0087]在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,確定截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量;
[0088]對確定的截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量進行累加,得到資源總量。
[0089]其中,對于該組數(shù)據(jù)中的每一數(shù)據(jù),確定截止此時處理該數(shù)據(jù)所消耗的資源量的方法包括:[0090]獲取預先設定的該數(shù)據(jù)對應的線程在處理該數(shù)據(jù)的過程中在時刻t所消耗的資源量達到的峰值M,以及處理該數(shù)據(jù)所需要消耗的時間T ;其中,t小于或等于T,并且,在時刻t之前,該線程處理該數(shù)據(jù)所消耗的資源量與時間成正比;
[0091]利用該比例關系,以及數(shù)據(jù)對應的t、M、T的值,確定截止此時處理該數(shù)據(jù)所消耗的資源量。
[0092]例如:以8個線程同時處理一批數(shù)據(jù)為例,線程處理數(shù)據(jù)所消耗的時間如表1所示;
[0093]表1
[0094]
【權利要求】
1.一種多線程處理數(shù)據(jù)的方法,其特征在于,該方法包括: 對于當前采用多線程處理的數(shù)據(jù)組,當其中的任一數(shù)據(jù)處理結束時,從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中;其中,一個線程處理一個數(shù)據(jù); 估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若所述資源總量滿足預設條件,則開始處理該組數(shù)據(jù)。
2.如權利要求1所述的方法,其特征在于,估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,包括: 在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,確定截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量; 對確定的截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量進行累加,得到資源總量。
3.如權利要求2所述的方法,其特征在于,對于該組數(shù)據(jù)中的每一數(shù)據(jù),確定截止此時處理該數(shù)據(jù)所消耗的資源量,包括: 獲取預先設定的該數(shù)據(jù)對應的線程在處理該數(shù)據(jù)的過程中在時刻t所消耗的資源量達到的峰值M,以及處理該數(shù)據(jù)所需要消耗的時間T ;其中,t小于或等于T,并且,在時刻t之前,該線程處理該數(shù)據(jù)所消耗的資源量與時間成正比; 利用所述比例關系,以及所述t、M、T的值,確定截止此時處理該數(shù)據(jù)所消耗的資源量。
4.如權利要求1所述的方法,其特征在于,判斷估算的所述資源總量是否滿足預設條件的方法包括: 判斷估算的所述資源總量是否大于預設的資源總量的最大值,如果是,則更新該組數(shù)據(jù);否則,判斷估算的所述資源總量是否小于預設的資源總量的最小值,如果是,則更新該組數(shù)據(jù),否則,確定估算的所述資源總量滿足預設條件。
5.如權利要求4所述的方法,其特征在于,該方法還包括: 當更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均大于所述預設的資源總量的最大值時,若當前處理的數(shù)據(jù)組為首次組成的數(shù)據(jù)組時,則減少數(shù)據(jù)組中的數(shù)據(jù)個數(shù),以及處理該組數(shù)據(jù)所需線程的個數(shù),并重新估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,并判斷該資源總量是否滿足預設條件;或者,若當前處理的數(shù)據(jù)組不是首次組成的數(shù)據(jù)組,則當前處理數(shù)據(jù)結束的線程停止處理數(shù)據(jù); 當更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均小于所述預設的資源總量的最小值時,則從更新后的數(shù)據(jù)組中選擇對應的估算出的資源總量最大的數(shù)據(jù)組進行數(shù)據(jù)處理。
6.如權利要求1所述的方法,其特征在于,在開始處理該組數(shù)據(jù)之后,當其中的任一數(shù)據(jù)處理結束時,重新從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中,并估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若所述資源總量滿足預設條件,則重新開始處理該組數(shù)據(jù)。
7.一種多線程處理數(shù)據(jù)的裝置,其特征在于,該裝置包括: 選擇單元,用于對于當前采用多線程處理的數(shù)據(jù)組,當其中的任一數(shù)據(jù)處理結束時,從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中;其中,一個線程處理一個數(shù)據(jù); 處理單元,用于估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若所述資源總量滿足預設條件,則開始處理該組數(shù)據(jù)。
8.如權利要求7所述的裝置,其特征在于,所述處理單元估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,具體用于: 在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,確定截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量; 對確定的截止此時處理該組數(shù)據(jù)中每一數(shù)據(jù)所消耗的資源量進行累加,得到資源總量。
9.如權利要求8所述的裝置,其特征在于,對于該組數(shù)據(jù)中的每一數(shù)據(jù),所述處理單元在確定截止此時處理該數(shù)據(jù)所消耗的資源量時,具體用于: 獲取預先設定的該數(shù)據(jù)對應的線程在處理該數(shù)據(jù)的過程中在時刻t所消耗的資源量達到的峰值M,以及處理該數(shù)據(jù)所需要消耗的時間T ;其中,t小于或等于T,并且,在時刻t之前,該線程處理該數(shù)據(jù)所消耗的資源量與時間成正比; 利用所述比例關系,以及所述t、M、T的值,確定截止此時處理該數(shù)據(jù)所消耗的資源量。
10.如權利要求7所述的裝置,其特征在于,所述處理單元在判斷估算的所述資源總量是否滿足預設條件時,具體用于: 判斷估算的所述資源總量是否大于預設的資源總量的`最大值,如果是,則更新該組數(shù)據(jù);否則,判斷估算的所述資源總量是否小于預設的資源總量的最小值,如果是,則更新該組數(shù)據(jù),否則,確定估算的所述資源總量滿足預設條件。
11.如權利要求10所述的裝置,其特征在于,所述處理單元還用于: 當更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均大于所述預設的資源總量的最大值時,若當前處理的數(shù)據(jù)組為首次組成的數(shù)據(jù)組時,則減少數(shù)據(jù)組中的數(shù)據(jù)個數(shù),以及處理該組數(shù)據(jù)所需線程的個數(shù),并重新估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,并判斷該資源總量是否滿足預設條件;或者,若當前處理的數(shù)據(jù)組不是首次組成的數(shù)據(jù)組,則當前處理數(shù)據(jù)結束的線程停止處理數(shù)據(jù); 當更新后的任意一組數(shù)據(jù)對應的估算出的資源總量均小于所述預設的資源總量的最小值時,則從更新后的數(shù)據(jù)組中選擇對應的估算出的資源總量最大的數(shù)據(jù)組進行數(shù)據(jù)處理。
12.如權利要求7所述的裝置,其特征在于,所述處理單元在開始處理該組數(shù)據(jù)之后,當其中的任一數(shù)據(jù)處理結束時, 所述選擇單元,還用于重新從未處理的數(shù)據(jù)中選擇一個數(shù)據(jù),并添加到該數(shù)據(jù)組中; 所述處理單元,還用于估算在第一次處理該數(shù)據(jù)組中任一數(shù)據(jù)結束時,處理該數(shù)據(jù)組中的數(shù)據(jù)所消耗的資源總量,若所述資源總量滿足預設條件,則重新開始處理該組數(shù)據(jù)。
【文檔編號】G06F9/50GK103885837SQ201410100610
【公開日】2014年6月25日 申請日期:2014年3月18日 優(yōu)先權日:2014年3月18日
【發(fā)明者】余再躍, 李東宇 申請人:上海大唐移動通信設備有限公司, 大唐移動通信設備有限公司