• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于Python的并行編程技術(shù)在批量氣象規(guī)范報表入庫處理中的應(yīng)用

    2018-08-13 11:34:26郭學(xué)兵
    軟件 2018年7期
    關(guān)鍵詞:報表進(jìn)程代碼

    郭學(xué)兵

    ?

    基于Python的并行編程技術(shù)在批量氣象規(guī)范報表入庫處理中的應(yīng)用

    郭學(xué)兵

    (中國科學(xué)院地理科學(xué)與資源研究所生態(tài)系統(tǒng)網(wǎng)絡(luò)觀測與模擬重點(diǎn)實(shí)驗(yàn)室,北京 100101)

    為滿足中國生態(tài)系統(tǒng)研究網(wǎng)絡(luò)(英文全稱Chinese Ecosystem Research Network,簡稱CERN)對大批量氣象規(guī)范報表(Excel格式)進(jìn)行高效快速轉(zhuǎn)換并載入數(shù)據(jù)庫的需求,作者在對當(dāng)前流行的并行編程方法和技術(shù)進(jìn)行對比研究的基礎(chǔ)上,提出了利用Python的多進(jìn)程編程技術(shù)實(shí)現(xiàn)報表處理的方案,建立了CERN氣象規(guī)范報表的抽象數(shù)據(jù)轉(zhuǎn)換模型,并編寫了多進(jìn)程并行處理程序,實(shí)現(xiàn)了將大批量氣象報表的快速轉(zhuǎn)換載入Oracle數(shù)據(jù)庫的功能。同時,作者對多進(jìn)程編程的不同參數(shù)設(shè)置情景下的轉(zhuǎn)換效率進(jìn)行了測試、比較和分析。實(shí)驗(yàn)結(jié)果顯示,利用Python并行編程技術(shù)可以充分利用計算機(jī)硬件的潛力和性能,從而大大提高處理效率,且方法簡便、事半功倍。作者最后進(jìn)一步建議通過利用Parallel Python軟件包,可更充分利用計算機(jī)多核性能,更大程度提高處理效率。更加滿足CERN日益增長的數(shù)據(jù)快速處理需求。同時本文為類似數(shù)據(jù)處理需求提供了可借鑒的參考方案。

    中國生態(tài)系統(tǒng)研究網(wǎng)絡(luò);CERN;python;并行編程;多進(jìn)程;氣象;報表;轉(zhuǎn)換入庫

    0 引言

    中國生態(tài)系統(tǒng)研究網(wǎng)絡(luò)(英文全稱Chinese Ecosystem Research Network,簡稱CERN)始建于1988年。目前,CERN包含覆蓋全國主要類型區(qū)(農(nóng)田、森林、草原、荒漠、濕地、湖泊、海灣生態(tài)系統(tǒng)等)共計44個野外生態(tài)站,另有水分、土壤、大氣等5個學(xué)科分中心和1個綜合中心。CERN與美國長期生態(tài)研究網(wǎng)絡(luò)(US LTER Network)和英國環(huán)境變化網(wǎng)絡(luò)(ECN)并列成為世界最為重要的國家級生態(tài)系統(tǒng)網(wǎng)絡(luò),是中國生態(tài)學(xué)領(lǐng)域的重要觀測、研究、示范基地[1]。

    CERN以野外生態(tài)站為基礎(chǔ)單元開展各類生態(tài)系統(tǒng)中水分、土壤、生物、大氣環(huán)境要素的長期觀測,產(chǎn)生的數(shù)據(jù)由相關(guān)各方(產(chǎn)生者—生態(tài)站,質(zhì)量控制者—學(xué)科分中心,數(shù)據(jù)集成者—綜合中心)按照統(tǒng)一規(guī)定的數(shù)據(jù)監(jiān)測規(guī)范及信息規(guī)范,對數(shù)據(jù)進(jìn)行相應(yīng)處理并實(shí)現(xiàn)生態(tài)站-分中心-綜合中心逐級質(zhì)量控制和數(shù)據(jù)報送。綜合中心是所有生態(tài)站、各類環(huán)境要素數(shù)據(jù)的最終集成單位,因此綜合中心必須通過開發(fā)軟件系統(tǒng),實(shí)現(xiàn)這些數(shù)據(jù)的快速處理、入庫及網(wǎng)上發(fā)布共享等整套業(yè)務(wù)的長期穩(wěn)定運(yùn)行,以便為我國生態(tài)與環(huán)境保護(hù)、資源合理利用和國家可持續(xù)發(fā)展及應(yīng)對全球變化等提供長期、系統(tǒng)的科學(xué)數(shù)據(jù)和決策依據(jù)[1]。

    CERN傳統(tǒng)氣象數(shù)據(jù)報表轉(zhuǎn)換入庫處理程序采用微軟Windows環(huán)境下OFFICE COM對象(Component Object Model)的面向?qū)ο缶幊谭椒?,在Microsoft Visual Foxpro6.0編程環(huán)境下實(shí)現(xiàn)對Excel文件的讀寫(顯式或隱式運(yùn)行Excel 應(yīng)用,操作工作薄、工作表對象,實(shí)現(xiàn)數(shù)據(jù)存取操作等),實(shí)現(xiàn)從Excel數(shù)據(jù)到VFP數(shù)據(jù)庫表(.dbf文件)的數(shù)據(jù)移動[2]。然后再將.dbf文件數(shù)據(jù)表升遷到Oracle數(shù)據(jù)庫。

    這種傳統(tǒng)的數(shù)據(jù)處理方法需要不斷地進(jìn)行I/O處理,因此造成處理時間過長[3],不能充分利用計算機(jī)性能,導(dǎo)致數(shù)據(jù)處理效率低下(CERN單一指標(biāo)的數(shù)據(jù)處理大約耗費(fèi)半小時)。

    隨著CERN野外生態(tài)站個數(shù)、監(jiān)測指標(biāo)個數(shù)不斷增加等情況出現(xiàn),數(shù)據(jù)采集正朝著海量化方向發(fā)展,這對數(shù)據(jù)處理和質(zhì)量控制的效率提出了更高挑戰(zhàn);同時,計算機(jī)硬件技術(shù)也日新月異地發(fā)展,處理器性能不斷提高,且多核處理器已成為當(dāng)前處理器技術(shù)的發(fā)展方向,這些硬件變化的同時引領(lǐng)軟件研發(fā)發(fā)生了基礎(chǔ)性變化?;诙嗪说牟⑿刑幚硎浅浞职l(fā)揮多核CPU強(qiáng)大運(yùn)算能力的有效途徑,并行計算模式正成為當(dāng)前及未來程序開發(fā)的發(fā)展趨勢,具有十分廣闊的應(yīng)用價值[4]。

    傳統(tǒng)程序基本上是為順序處理器書寫的,大部分程序在多處理器上不能直接獲得加速,不再適應(yīng)新形勢下的數(shù)據(jù)處理需求。解決這一問題的途徑之一是使用多處理器并行處理技術(shù)把順序程序轉(zhuǎn)換為并行程序[5],才能充分利用目前多核計算機(jī)等提供的計算資源等。

    本文主要針對CERN生態(tài)站大批量的由自動氣象觀測站采集的固定格式Excel數(shù)據(jù)報表,進(jìn)行快速轉(zhuǎn)換并入庫的并行處理技術(shù)方法進(jìn)行分析、研究、實(shí)踐驗(yàn)證。作者首先對當(dāng)前流行的并行編程方法和技術(shù)進(jìn)行了對比研究,提出了基于Python多進(jìn)程編程技術(shù)實(shí)現(xiàn)報表轉(zhuǎn)換入庫的構(gòu)。然后建立了CERN氣象規(guī)范報表的抽象數(shù)據(jù)轉(zhuǎn)換模型,利用Python2.7編寫了多進(jìn)程并行程序,實(shí)現(xiàn)了氣象規(guī)范報表的快速轉(zhuǎn)換及載入Oracle數(shù)據(jù)庫功能,并對多進(jìn)程編程的不同參數(shù)設(shè)置情景下的轉(zhuǎn)換效率進(jìn)行了比較和分析。結(jié)果表明基于Python的并行處理技術(shù)極大提升了應(yīng)用程序的運(yùn)行效率,充分發(fā)揮了計算機(jī)硬件性能。

    1 多線程并行程序設(shè)計方法概述

    根據(jù)對并行處理技術(shù)的綜述性文獻(xiàn)內(nèi)容進(jìn)行歸納總結(jié),多線程并行程序設(shè)計方法目前主要包括以下幾種[6]:

    (1)顯示線程編程

    并行編程可以調(diào)用系統(tǒng)函數(shù)啟動多線程,例如:Pthreads、Java線程類、微軟Widows線程API。

    (2)利用并行編程模型的編譯器指導(dǎo)的編程

    ? OpenMP:OpenMP是一種面向共享內(nèi)存的多處理器多線程并行編程模型,為在共享存儲的多處理機(jī)上編寫并行程序而設(shè)計的應(yīng)用編程接口,運(yùn)行在單機(jī)多核并行計算環(huán)境下。由一個小型的編譯器命令集組成,包括一套編譯制導(dǎo)語句和一個用來支持它的函數(shù)庫。OpenMP 的編程模型以線程為基礎(chǔ),通過編譯指導(dǎo)語句來顯示地指導(dǎo)共享內(nèi)存的多線程并行化,為編程人員提供了并行化的完整控制。通過與標(biāo)準(zhǔn)Fortran,C和C ++結(jié)合進(jìn)行編程[5]

    ? Intel TBB:Intel Thread Building Block編譯器

    (3)利用并行應(yīng)用庫編程

    ? Intel IPPMKL,ScalaPACK、PARDISO

    ? MPI:MPI(Message Passing Interface)是基于消息傳遞的并行編程模型。消息傳遞指的是并行執(zhí)行的各個進(jìn)程具有自己獨(dú)立的堆棧和代碼段,作為互不相關(guān)的多個程序獨(dú)立執(zhí)行,進(jìn)程之間的通信通過顯式地調(diào)用通信函數(shù)來完成[7]。它用于非共享內(nèi)存(即分布式共享內(nèi)存)的集群計算環(huán)境,是用于計算機(jī)集群的編程技術(shù)。

    (4)并行程序語言編程

    目前有150種以上并行編程語言,其中Python是著名的一種并行程序開發(fā)語言,有進(jìn)程池概念,不用自己創(chuàng)建進(jìn)程。

    (5)MapReduce

    MapReduce是一種基于Google云計算平臺的分布式編程模型,其云計算基礎(chǔ)架構(gòu)包括3個相互獨(dú)立又緊密結(jié)合的系統(tǒng)(分布式文件系統(tǒng)GFS、并行編程模型和任務(wù)調(diào)度模型MapReduce、處理結(jié)構(gòu)化以及半結(jié)構(gòu)化數(shù)據(jù)的大規(guī)模分布式數(shù)據(jù)庫Bigtable)。Apache Hadoop是一種由Java語言編寫的運(yùn)行在Linux 操作系統(tǒng)之上的開源云計算平臺,由HDFS(Hadoop Distribute File System)和Hadoop MapReduce 兩個核心部件組成,二者分別是GFS 和Google MapReduce的開源實(shí)現(xiàn),Hadoop目前已經(jīng)成為大數(shù)據(jù)領(lǐng)域事實(shí)上的標(biāo)準(zhǔn)[8]。

    綜上所述,目前并行程序設(shè)計方法非常多樣化,而且仍處于不斷發(fā)展之中,并無固定不變的定式。并行程序設(shè)計方法支持不同的開發(fā)環(huán)境,開發(fā)復(fù)雜度及開發(fā)成本相異,適宜處理不同規(guī)模及特征的數(shù)據(jù)與處理方法,可分別滿足不同的并行處理流程、應(yīng)用場景需求。

    本文重點(diǎn)討論應(yīng)用Python面向?qū)ο蟮膭討B(tài)的高級程序設(shè)計語言,基于其并行程序編程方法以及強(qiáng)大科學(xué)計算功能而開發(fā)并行處理程序,實(shí)現(xiàn)CERN批量氣象規(guī)范報表的快速轉(zhuǎn)換入庫的方法和技術(shù)。

    2 Python并行編程

    Python是一種模塊化設(shè)計的,具有簡潔和高可讀性語法的高級編程語言,且支持多種方式的并行編程。基于Python語言的并行編程技術(shù)發(fā)展至今,形成了5種模式,分別是:異步編程模式、分布式并行模式、GPU并行模式、基于多線程的并行模式和基于多進(jìn)程的并行模式。其中,異步編程模式適用于因復(fù)雜任務(wù)中的子任務(wù)爭奪運(yùn)算資源,而需要在程序運(yùn)行期間協(xié)調(diào)CPU使用權(quán)的情況;分布式并行模式應(yīng)用于集群運(yùn)算;GPU并行模式則應(yīng)用于圖4形及科學(xué)運(yùn)算。這兩種模式均不適合CERN的氣象數(shù)據(jù)報表轉(zhuǎn)換處理的應(yīng)用需求[9]。而“多線程”和“多進(jìn)程”是可用于CERN氣象規(guī)范報表轉(zhuǎn)換處理并行化運(yùn)行的主要實(shí)現(xiàn)方式。

    Python由于全局鎖GIL(Global Interpreter Lock)的存在,Python中的多線程其實(shí)并不是真正的多線程,Python的多線程不是并行執(zhí)行(物理上同時發(fā)生)而是并發(fā)執(zhí)行(輪換執(zhí)行,邏輯上同時發(fā)生),還不能利用多核CPU[10]。如果想要充分使用多核CPU的資源,Python3.4中的 Parallel Python包可支持多CPU并行計算。

    在Python2.7中使用多進(jìn)程,它通過采用子進(jìn)程的技術(shù)避開GIL,使用multiprocessing進(jìn)行多進(jìn)程編程提高程序效率。Python提供了非常好用的多進(jìn)程包multiprocessing,可輕松完成從單進(jìn)程到并發(fā)執(zhí)行的轉(zhuǎn)換,只需要編程人員定義一個函數(shù),Python會完成其他所有事情。Multiprocessing支持子進(jìn)程、通信和共享數(shù)據(jù)、支持執(zhí)行不同方式的同步,提供了Process、Queue、Pipe、Lock等組件來支持對程序并行化的控制。

    3 CERN氣象規(guī)范報表數(shù)據(jù)處理流程及并行化方法分析

    3.1 數(shù)據(jù)轉(zhuǎn)換抽象模型

    (1)待處理報表源文件(from_Sheet)

    待處理的CERN氣象規(guī)范報表每年包含待528個待處理文件(每年44個生態(tài)站,12個月/生態(tài)站),每個excel文件中包含共計26個指標(biāo)的sheet,分別存儲氣溫(T)、氣壓(P)、海平面氣壓(P0)、降水(R)、相對濕度(RH)、地表溫度(Tg0)、1小時風(fēng)速(W60)、10分鐘極大風(fēng)速(W10M)、2分鐘平均風(fēng)速(W2)、10分鐘平均風(fēng)速(W10A)等指標(biāo)的每月儀器自動記錄的各日逐時數(shù)據(jù)、逐日數(shù)據(jù)(日最高、日平均、日最低等)、逐月數(shù)據(jù)(月最高、月平均、月最低等)等子指標(biāo)[11]。

    Excel文件命名方式:3位臺站代碼+4位年份+2位月份。例如AKA201401.xls表示阿克蘇站2014年1月的觀測數(shù)據(jù)文件。

    (2)轉(zhuǎn)換目標(biāo)表(to_Table)

    每個指標(biāo)的sheet數(shù)據(jù)將被轉(zhuǎn)換分解為三個有待載入Oracle數(shù)據(jù)庫表的子指標(biāo),例如氣溫(T)sheet最終將被轉(zhuǎn)換為3個子指標(biāo):小時尺度氣溫(T1)、日尺度氣溫(T2)、月尺度氣溫(T3),它們分別是二維關(guān)系數(shù)據(jù)表的格式,其數(shù)據(jù)項的說明字典如下:

    表代碼及表名稱列代碼及其中文含義 T1(自動站每日逐時氣溫表)代碼SSS000YYYY00MM0000DD0000T102T104T106T108T110……T148 中文含義臺站代碼年月日21時22時23時24時1時……20時 T2(自動站逐日氣溫)代碼SSS000YYYY00MM0000DD0000MEAN00MAX000TIME10MIN000TIME20 中文含義臺站代碼年月日日平均值日最大值日最大值出現(xiàn)時間日最小值日最小值出現(xiàn)時間 T3(自動站逐月氣溫)代碼SSS000YYYY00MM0000T302T304T306MAX000TIME10MIN000TIME20 中文含義臺站代碼年月月平均日最大值月平均日最小值月平均月極大值月極大值出現(xiàn)日期月極小值月極小值出現(xiàn)日期

    (3)數(shù)據(jù)轉(zhuǎn)換抽象模型

    數(shù)據(jù)轉(zhuǎn)換抽象模型主要定義了源sheet、轉(zhuǎn)換目標(biāo)表、以及各目標(biāo)表源數(shù)據(jù)存儲區(qū)段序列。數(shù)據(jù)存儲區(qū)段序列由1~n個區(qū)段組成(區(qū)段是excel中一片連續(xù)的區(qū)域),每個區(qū)段由區(qū)段順序編號、起始列、終止列、起始行號、終止行號定義。終止行號為“dpm”意味著終止行需要依據(jù)不同年份每月所含日數(shù)不同計算而定。下表是氣溫(T)指標(biāo)的數(shù)據(jù)轉(zhuǎn)換抽象模型示例。其他指標(biāo)定義與此類似。

    圖2 數(shù)據(jù)轉(zhuǎn)換抽象模型示例(氣溫T為例)

    3.2 數(shù)據(jù)轉(zhuǎn)換入庫方法和流程

    (1)數(shù)據(jù)轉(zhuǎn)換過程

    循環(huán)處理各生態(tài)站(第一層循環(huán))、各年份(第二層循環(huán))、各指標(biāo)(第三層循環(huán))。

    在各個指標(biāo)的循環(huán)中將當(dāng)前生態(tài)站、當(dāng)前年的1-12月excel數(shù)據(jù)進(jìn)行逐月順序處理,分別寫入小時值、日值、月值的合并后數(shù)據(jù)文件(例如T1.csv、T2.csv、T3.csv),并生成相應(yīng)的控制文件(例如T1.ctl、T2. ctl、T3. ctl)。寫入過程中進(jìn)行質(zhì)量控制,將“-”、“//”等符號去掉替換成空。

    (2)數(shù)據(jù)入庫過程

    將每年的所有生態(tài)站的報表源數(shù)據(jù)528個讀入內(nèi)存數(shù)組→進(jìn)行轉(zhuǎn)換(添加生態(tài)站代碼、年、月、日等信息)→然后合并后產(chǎn)生子指標(biāo)目標(biāo)表文件.csv。方法是:生成各個子指標(biāo)目標(biāo)表格的sqlldr命令控制文件和數(shù)據(jù)文件[12]。

    采用Sqlldr命令將合并后數(shù)據(jù)文件裝入Oracle數(shù)據(jù)庫,最終共生成78張目標(biāo)表格:

    例如氣溫日值表T2的控制文件T2.ctl(里面引用氣溫日值數(shù)據(jù)文件T2.csv)示例如下:

    OPTIONS(SKIP=1,ROWS=16061)

    LOAD DATA

    INFILE "T2.csv"

    insert into table T2

    Fields terminated by ","

    Optionally enclosed by '"'

    trailing nullcols

    (SSS000,YYYY00,MM0000,DD0000,MEAN00,MAX000,TIME10,MIN000,TIME20)

    3.3 處理流程并行化分析及其關(guān)鍵技術(shù)

    (1)數(shù)據(jù)轉(zhuǎn)換過程的并行化方法分析

    通過整個轉(zhuǎn)換過程的流程分析,為了減少并行進(jìn)程之間的通信開銷、減少文件I/O次數(shù)及讀寫共享沖突,決定對指標(biāo)分門別類進(jìn)行并行化。因?yàn)镃ERN報表源按照其不同存儲格式可分為4類,分別編寫每類報表的轉(zhuǎn)換程序代碼,這些代碼分別作為函數(shù)傳遞給多進(jìn)程并行處理程序,從而使得程序并行處理實(shí)現(xiàn)快速轉(zhuǎn)換。4類程序包括:

    ● run_other程序處理氣溫、濕度、氣壓、降水、土壤溫度……等一類報表;

    ● run_W60_W10M程序處理1小時風(fēng)、10分鐘極大風(fēng)等一類報表;

    ● run_W2_W10A程序處理2分鐘平均風(fēng)、10分鐘平均風(fēng)等一類報表;

    ● run_Radi_D5程序處理輻射小時類數(shù)據(jù)一類報表。

    以此類推,可擴(kuò)展處理所有類別報表。

    (2)數(shù)據(jù)轉(zhuǎn)換函數(shù)代碼編寫

    以run_other函數(shù)為例,其輸入?yún)?shù)為:報表源sheet名、生態(tài)站代碼、年份共三個參數(shù)。程序需要導(dǎo)入Pandas數(shù)據(jù)包(import pandas as pd)、Numpy數(shù)組包(import numpy as np)。Numpy(Numerical Python)數(shù)組包提供了python對多維數(shù)組對象的支持,但它缺少數(shù)據(jù)處理分析所需的許多快速工具,Pandas(Python Data Analysis Library)基于NumPy開發(fā),Pandas提供了大量快速便捷地處理大型數(shù)據(jù)集(比如Excel文件讀寫)所需的函數(shù)和方法,使得Python成為強(qiáng)大而高效的數(shù)據(jù)分析處理環(huán)境[13]。Numpy和Pandas二者結(jié)合起來可以非常方便地實(shí)現(xiàn)報表源數(shù)據(jù)到目標(biāo)數(shù)據(jù)文件的快速轉(zhuǎn)換。

    代碼主體主要順序逐月處理12個月的數(shù)據(jù)報表源Excel文件,按照抽象數(shù)據(jù)模型將Excel文件的數(shù)據(jù)讀入內(nèi)存數(shù)組,并利用Numpy數(shù)組包進(jìn)行內(nèi)存數(shù)組的各種操作(插入行、列),然后將處理好的內(nèi)存數(shù)組寫到與數(shù)據(jù)字典結(jié)構(gòu)一致的.csv數(shù)據(jù)文件及相應(yīng)的控制文件.ctl。run_other函數(shù)主要用于溫度、濕度、氣壓、降水、土壤溫度等具有同樣格式的sheet的處理。

    (3)并行化關(guān)鍵技術(shù)

    實(shí)現(xiàn)“多進(jìn)程”編程首先要導(dǎo)入multiprocessing站點(diǎn)包,建立進(jìn)程池pool,并將待并行運(yùn)行的代碼以函數(shù)形式傳遞給進(jìn)程,實(shí)現(xiàn)動態(tài)映射任務(wù),從而實(shí)現(xiàn)并行。其核心代碼如下:

    import multiprocessing as mp #-----導(dǎo)入多進(jìn)程支持模塊

    from multiprocessing import Pool #-----導(dǎo)入多進(jìn)程支持模塊下的進(jìn)程池

    通過建立多進(jìn)程mp的進(jìn)程池pool,可以提供指定數(shù)量的進(jìn)程供用戶調(diào)用,當(dāng)有新的請求提交到pool中時,如果池還沒有滿,就會創(chuàng)建一個新的進(jìn)程用來執(zhí)行該請求;如果池中的進(jìn)程數(shù)已經(jīng)達(dá)到規(guī)定最大值,那么該請求就會等待,直到池中有進(jìn)程結(jié)束,才會創(chuàng)建新的進(jìn)程來執(zhí)行它。

    下面例子展示了對前3類報表進(jìn)行并行化處理的代碼片斷。

    def apply_async(): #-------非阻塞并行

    #-----處理所有年份的數(shù)據(jù),本次僅處理1年的數(shù)據(jù)

    YEAR=[2014]

    #-----所有生態(tài)站代碼,共44個生態(tài)站待處理SITE=["AKA","ASA","SJM","HLA","FKD","NMD","SYA","LCA","YCA","SPD","FQA","CWA","CSA","YGA","TYA","YTA","QYA","CBF","BJF","GGF","GGS","HTF","DHF","HSF","BNF","NMG","HBG","JZB","THL","DHL","DYB","SYB","CLD","MXF","ALF","LSA","LZD","ESD","HJA","SNF","DTM","BJU","QYF","PYL"]

    #-----申請非阻塞式并行的進(jìn)程池,最大進(jìn)程數(shù)processes可設(shè)為1、2、4、8、16等。以處理8個指標(biāo)為例。維持執(zhí)行的進(jìn)程總數(shù)為processes,當(dāng)一個進(jìn)程執(zhí)行完畢后會添加新的進(jìn)程進(jìn)去

    pool = mp.Pool(processes=4)

    pool.apply_async(run_W60_W10M, ("W60",YEAR,SITE,), )

    pool.apply_async (run_W60_W10M, ("W10M", YEAR,SITE,),)

    pool.apply_async(run_W2_W10A, ("W2",YEAR, SITE,), )

    pool.apply_async(run_W2_W10A, ("W10A", YEAR, SITE,), )

    pool.apply_async(run_other, ("P",YEAR,SITE,), )

    pool.apply_async(run_other, ("P0",YEAR,SITE,), )

    pool.apply_async(run_other, ("R",YEAR,SITE,), )

    pool.apply_async(run_other, ("Tg0",YEAR, SITE,), )

    #-----關(guān)閉進(jìn)程池。調(diào)用join之前,先調(diào)用close函數(shù),執(zhí)行完close后不會有新的進(jìn)程加入到pool

    pool.close()

    pool.join() #-----主進(jìn)程阻塞,等待子進(jìn)程的退出,join方法要在close或terminate之后使用。

    #-----啟動主程序,申請并行執(zhí)行

    if __name__ == "__main__":

    apply_async()

    4 并行編程運(yùn)行效果分析

    試驗(yàn)環(huán)境:4核Intel? Xeon? CPU E3-1225 v5,內(nèi)存16 GB,主頻3.30 GHz。Python版本2.7,處理44個生態(tài)站2014年的8個指標(biāo)數(shù)據(jù)。

    采用上述非阻塞式并行的進(jìn)程池進(jìn)行并行轉(zhuǎn)換處理。最大進(jìn)程數(shù)processes分別設(shè)為1、2、4、8、16、32、64個進(jìn)程,對比測試并行運(yùn)行時間長度,以此比較并行化執(zhí)行效率,如圖5所示。

    圖3 并行編程不同運(yùn)行效果比對

    結(jié)果顯示:

    (1)傳統(tǒng)串行運(yùn)行與并行一個進(jìn)程的執(zhí)行時間相差無幾,甚至并行一個進(jìn)程比串行執(zhí)行耗費(fèi)時間更長,原因是并行一個進(jìn)程時,計算機(jī)為多進(jìn)程處理建立進(jìn)程池開銷反而超過了串行進(jìn)程;

    (2)并行處理顯著加快了處理效率,并行4個進(jìn)程的處理效率基本上是傳統(tǒng)串行的執(zhí)行效率的4倍。

    (3)并行4個進(jìn)程時(實(shí)際上邏輯進(jìn)程已達(dá)8個,達(dá)到操作系統(tǒng)并行進(jìn)程最大數(shù)),此時轉(zhuǎn)換處理時間可達(dá)最少。隨后即使增加最大并行進(jìn)程數(shù),也不會減短程序耗費(fèi)時間,說明已達(dá)到計算機(jī)處理的極限;

    (4)并行2個進(jìn)程時,此時CPU占比60%左 右,程序處理時間大約下降到并行一個進(jìn)程的處理時間的一半;

    (5)并行4個進(jìn)程時(實(shí)際上邏輯進(jìn)程已達(dá)8個,達(dá)到操作系統(tǒng)并行最大數(shù)),此時CPU占比已近100%,達(dá)到計算機(jī)CPU的極限;

    (6)串行或并行進(jìn)程數(shù)小于等于4個時,內(nèi)存占比幾乎不變,這是因?yàn)閮?nèi)存占比主要受單一指標(biāo)轉(zhuǎn)換處理時的內(nèi)存使用率(單一指標(biāo)數(shù)據(jù)量大?。┯绊?,和進(jìn)程數(shù)相關(guān)關(guān)系很??;反倒是并行進(jìn)程數(shù)大于16個時,內(nèi)存占比增加,主要受進(jìn)程數(shù)增多導(dǎo)致的進(jìn)程池本身內(nèi)存開銷增大的影響。

    5 結(jié)語

    試驗(yàn)結(jié)果表明,利用新型編程語言Python的并行編程環(huán)境和python科學(xué)計算優(yōu)勢,可大幅提高氣象數(shù)據(jù)報表轉(zhuǎn)換程序的運(yùn)行效率,充分利用性能不斷提升的計算機(jī)硬件設(shè)備的潛力。本文使用的Python2.7未安裝Parallel Python包,故采用非阻塞式并行編程方法,此方案可充分利用單核CPU的計算能力,發(fā)揮多進(jìn)程優(yōu)勢,實(shí)現(xiàn)CERN氣象數(shù)據(jù)報表的高效處理。數(shù)據(jù)格式轉(zhuǎn)換操作是典型的數(shù)據(jù)密集型計算任務(wù),進(jìn)程間僅有少量指令通信,通信代價微乎其微,而各子進(jìn)程又單獨(dú)處理計算任務(wù),在沒有讀寫瓶頸制約的條件下,理論上并行轉(zhuǎn)換引擎可以達(dá)到子進(jìn)程數(shù)量正相關(guān)的加速比[14]。

    未來如果使用Python3.4以上版本,可使用Parallel Python并行編程方法,就可將轉(zhuǎn)換程序運(yùn)行于SMP[15](即“對稱多處理Symmetrical Multi- Processing”技術(shù),單機(jī)多核)或集群環(huán)境上,方可充分利用多核CPU,更加依托多進(jìn)程優(yōu)勢實(shí)現(xiàn)CERN氣象數(shù)據(jù)報表的更高效處理。

    [1] 楊萍, 于秀波, 莊緒亮, 牛棟. 中國科學(xué)院中國生態(tài)系統(tǒng)研究網(wǎng)絡(luò)(CERN)的現(xiàn)狀及未來發(fā)展思路[J]. 中國科學(xué)院院刊, 2008, 23(6): 555-561.

    [2] 李曉京等. C++/CLR數(shù)據(jù)庫與Excel并行數(shù)據(jù)轉(zhuǎn)換技術(shù)研究[J]. 計算機(jī)技術(shù)與發(fā)展. 2013, 23(7): 155-162.

    [3] 王志斌. 天氣雷達(dá)資料實(shí)時并行處理方法[J]. 計算機(jī)工程. 2009. 35(23): 255-257.

    [4] 韓李濤, 劉海龍, 孔巧麗, 陽凡林. 基于多核計算環(huán)境的地貌暈渲并行算法[J]. 計算機(jī)應(yīng)用. 2017, 37(7): 1911- 1915, 1920.

    [5] 蔡佳佳, 李名世, 鄭鋒. 多核微機(jī)基于OpenMP的并行計算[J]. 計算機(jī)技術(shù)與發(fā)展. 2007. 17(10): 87-91.

    [6] 王晗. 基于多核環(huán)境下的多線程并行程序設(shè)計方法研究[D]. 鄭州: 中原工學(xué)院, 2014.

    [7] 王磊. 并行計算技術(shù)綜述[J]. 信息技術(shù). 2012. 10: 112-115.

    [8] 應(yīng)毅, 劉亞軍. MapReduce并行計算技術(shù)發(fā)展綜述[J]. 計算機(jī)系統(tǒng)應(yīng)用. 2014. 23(4): 1-6, 11.

    [9] 楊霄翼. 基于Python的”地理處理”并行方案[J]. 地理信息世界. 2017. 24(6): 117-121.

    [10] 熊瑋. 多核并行計算技術(shù)在電力系統(tǒng)短路計算中的應(yīng)用. 電力系統(tǒng)自動化. 2011. 35(8): 49-52.

    [11] 中國生態(tài)系統(tǒng)研究網(wǎng)絡(luò). 生態(tài)系統(tǒng)大氣環(huán)境觀測規(guī)范[專著]。P125-129.

    [12] 沈佩娟, 湯荷美. 1995. 數(shù)據(jù)庫管理及應(yīng)用開發(fā), 清華大學(xué)出版社, 206-221.

    [13] 張若愚. Python科學(xué)計算(第2版)[M]. 北京: 清華大學(xué)出版社, 2016, 33-341.

    [14] 張帥. 柵格地理數(shù)據(jù)并行格式轉(zhuǎn)換引擎[J]. 國防科技大學(xué)學(xué)報. 2015. 37(5): 9-14.

    [15] 百度百科. SMP對稱多處理結(jié)構(gòu). https://baike.baidu.com/ item/SMP對稱多處理結(jié)構(gòu)/7213852.

    An Application of Python-Based Parallel Programming in Batch Meteorological Excel Sheets’ Processing and Loading into Database

    GUO Xue-bing

    (Key Laboratory of Ecosystem Network Observation and Modeling, Institute of Geographic Sciences and Natural Resources Research, CAS, Beijing 100101)

    In order to meet CERN’s (CERN is acronyms of Chinese Ecosystem Research Network) requirements of transforming batch meteorological Excel sheets quickly and loading into database in a high performance and efficiency, The author s tudy and compare several different parallel programming technologies at present, and Python-based parallel programming method is chosen as an approach to transform batch meteorological Excel sheets and load into Oracle database. Firstly the author build an abstract data model to describe data transform structure, then edit code using python-based multiprocessing parallel programming, at last the author analyze different transforming performance under condition of setting various parameters for multiprocessing parallel programming.The study result shows that python-based multiprocessing parallel programming method can fully utilize the computer ‘s hardware potential benchmark so as to promote the transform performance. Moreover, the method is quite simple and high efficient. The author suggest that Parallel Python package should be installed and imported, multi-core computers’ performance then could be utilized thoroughly to promote CERN’s data transforming performance much better in the future. This paper also provides a reference solution for other similar data transform requirement.

    Chinese ecosystem research network; CERN; Python; Parallel programming; Multiprocessing; Meteorological sheet; Transform and load into database.

    TP31

    A

    10.3969/j.issn.1003-6970.2018.07.005

    中國科學(xué)院戰(zhàn)略性先導(dǎo)科技專項(A類)(XDA19020301)資助

    郭學(xué)兵(1967-),女,副教授,主要研究方向:生態(tài)信息學(xué)。

    本文著錄格式:郭學(xué)兵. 基于Python的并行編程技術(shù)在批量氣象規(guī)范報表入庫處理中的應(yīng)用[J]. 軟件,2018,39(7):24-29

    猜你喜歡
    報表進(jìn)程代碼
    債券市場對外開放的進(jìn)程與展望
    中國外匯(2019年20期)2019-11-25 09:54:58
    LabWindows/CVI中Excel報表技術(shù)研究
    創(chuàng)世代碼
    動漫星空(2018年11期)2018-10-26 02:24:02
    創(chuàng)世代碼
    動漫星空(2018年2期)2018-10-26 02:11:00
    創(chuàng)世代碼
    動漫星空(2018年9期)2018-10-26 01:16:48
    創(chuàng)世代碼
    動漫星空(2018年5期)2018-10-26 01:15:02
    從三大報表讀懂養(yǎng)豬人的成績單
    社會進(jìn)程中的新聞學(xué)探尋
    我國高等教育改革進(jìn)程與反思
    Linux僵死進(jìn)程的產(chǎn)生與避免
    国产精品国产三级专区第一集| 久久久久久久精品精品| 国产精品熟女久久久久浪| 晚上一个人看的免费电影| 午夜福利一区二区在线看| 黄频高清免费视频| 成人国语在线视频| 超碰成人久久| 国产又爽黄色视频| av网站免费在线观看视频| 一本—道久久a久久精品蜜桃钙片| 国产av国产精品国产| 亚洲三区欧美一区| 丁香六月天网| 欧美激情高清一区二区三区| 狂野欧美激情性xxxx| 热re99久久国产66热| 啦啦啦啦在线视频资源| 一二三四社区在线视频社区8| 亚洲精品日韩在线中文字幕| 久久午夜综合久久蜜桃| 欧美亚洲日本最大视频资源| 黄色视频不卡| 午夜老司机福利片| 热re99久久国产66热| 三上悠亚av全集在线观看| www.999成人在线观看| 一区二区三区精品91| 丁香六月欧美| 999精品在线视频| 一本一本久久a久久精品综合妖精| 最新的欧美精品一区二区| 亚洲综合色网址| 超碰成人久久| av在线老鸭窝| 国产女主播在线喷水免费视频网站| 成人国产av品久久久| 狂野欧美激情性xxxx| 亚洲国产av新网站| 视频区图区小说| 欧美人与性动交α欧美精品济南到| 国产欧美亚洲国产| 免费高清在线观看日韩| 满18在线观看网站| 亚洲精品久久久久久婷婷小说| 欧美亚洲 丝袜 人妻 在线| 欧美日韩福利视频一区二区| 操美女的视频在线观看| 自拍欧美九色日韩亚洲蝌蚪91| 中文字幕最新亚洲高清| 啦啦啦在线免费观看视频4| 亚洲成人手机| 曰老女人黄片| 嫩草影视91久久| 少妇被粗大的猛进出69影院| 欧美亚洲 丝袜 人妻 在线| 久久影院123| 国产亚洲av高清不卡| 另类亚洲欧美激情| 久9热在线精品视频| 青青草视频在线视频观看| 建设人人有责人人尽责人人享有的| 国产一卡二卡三卡精品| 亚洲天堂av无毛| 国产视频首页在线观看| 亚洲国产最新在线播放| 国产精品 欧美亚洲| 国产伦理片在线播放av一区| 人人妻人人爽人人添夜夜欢视频| 久久久国产精品麻豆| 人人妻人人澡人人爽人人夜夜| 亚洲激情五月婷婷啪啪| 午夜av观看不卡| 极品人妻少妇av视频| 精品第一国产精品| 好男人视频免费观看在线| 国产精品一区二区精品视频观看| 韩国精品一区二区三区| 热99久久久久精品小说推荐| 中文字幕人妻丝袜一区二区| 亚洲av电影在线进入| 亚洲精品久久久久久婷婷小说| 51午夜福利影视在线观看| 欧美人与性动交α欧美精品济南到| 日本午夜av视频| 2018国产大陆天天弄谢| 我的亚洲天堂| 国产老妇伦熟女老妇高清| 亚洲精品在线美女| a级片在线免费高清观看视频| 成人亚洲精品一区在线观看| 久久中文字幕一级| 国产成人影院久久av| 男人操女人黄网站| bbb黄色大片| 青青草视频在线视频观看| 亚洲欧美一区二区三区久久| 午夜两性在线视频| 免费看不卡的av| 午夜福利在线免费观看网站| 国产福利在线免费观看视频| 成人国产av品久久久| 一级毛片我不卡| a级毛片黄视频| 超碰97精品在线观看| 免费少妇av软件| 黄片小视频在线播放| 满18在线观看网站| 国产麻豆69| 日日爽夜夜爽网站| 亚洲国产最新在线播放| 亚洲精品一区蜜桃| 久久精品熟女亚洲av麻豆精品| 成年人免费黄色播放视频| 日韩大码丰满熟妇| 日本vs欧美在线观看视频| 色视频在线一区二区三区| 亚洲国产最新在线播放| 久久人人97超碰香蕉20202| 久久精品熟女亚洲av麻豆精品| 午夜福利免费观看在线| 亚洲一码二码三码区别大吗| 成人三级做爰电影| 久久青草综合色| 色婷婷久久久亚洲欧美| 国产视频一区二区在线看| 久久亚洲精品不卡| 久久人妻福利社区极品人妻图片 | 亚洲欧美一区二区三区久久| 黄网站色视频无遮挡免费观看| 搡老岳熟女国产| 国产亚洲av片在线观看秒播厂| 国产精品九九99| 黄频高清免费视频| 国产成人影院久久av| 亚洲美女黄色视频免费看| 一区二区三区乱码不卡18| 激情五月婷婷亚洲| 美国免费a级毛片| 亚洲中文字幕日韩| 狠狠精品人妻久久久久久综合| 久久狼人影院| 久久国产精品大桥未久av| a级毛片在线看网站| 欧美人与性动交α欧美精品济南到| 久久久久精品国产欧美久久久 | 欧美另类一区| 美女福利国产在线| 午夜视频精品福利| 日本黄色日本黄色录像| 男女下面插进去视频免费观看| 成年女人毛片免费观看观看9 | 亚洲色图综合在线观看| 成年人午夜在线观看视频| 我的亚洲天堂| 97精品久久久久久久久久精品| 美女视频免费永久观看网站| 高清视频免费观看一区二区| 亚洲人成77777在线视频| 国产精品秋霞免费鲁丝片| 久久久久久亚洲精品国产蜜桃av| 多毛熟女@视频| 精品国产乱码久久久久久小说| 久久久久精品国产欧美久久久 | 美国免费a级毛片| 又紧又爽又黄一区二区| 午夜免费男女啪啪视频观看| 国产精品.久久久| 肉色欧美久久久久久久蜜桃| 婷婷色综合大香蕉| 制服人妻中文乱码| 国产免费视频播放在线视频| 欧美久久黑人一区二区| 一级黄色大片毛片| 水蜜桃什么品种好| 亚洲图色成人| 亚洲第一青青草原| 国产黄色免费在线视频| 久久天躁狠狠躁夜夜2o2o | 在线亚洲精品国产二区图片欧美| 国产精品九九99| 欧美日韩福利视频一区二区| 99久久99久久久精品蜜桃| 91字幕亚洲| a级片在线免费高清观看视频| 免费人妻精品一区二区三区视频| 91老司机精品| 成年人午夜在线观看视频| 欧美日韩精品网址| 另类亚洲欧美激情| 亚洲精品日韩在线中文字幕| 肉色欧美久久久久久久蜜桃| 成人黄色视频免费在线看| 欧美日韩亚洲国产一区二区在线观看 | 亚洲欧美成人综合另类久久久| 丝袜人妻中文字幕| 亚洲七黄色美女视频| 免费高清在线观看视频在线观看| 91国产中文字幕| 最新在线观看一区二区三区 | 亚洲精品国产av成人精品| 免费一级毛片在线播放高清视频 | 男女免费视频国产| 极品人妻少妇av视频| 人人澡人人妻人| 国产黄色视频一区二区在线观看| av视频免费观看在线观看| 大香蕉久久网| 午夜福利,免费看| 国产欧美日韩综合在线一区二区| 亚洲欧洲日产国产| 一级黄色大片毛片| av在线app专区| 另类亚洲欧美激情| 国产在线视频一区二区| 老司机影院毛片| 亚洲精品乱久久久久久| 日韩免费高清中文字幕av| 欧美97在线视频| 岛国毛片在线播放| 国产在线免费精品| 老鸭窝网址在线观看| 成人影院久久| 男女边吃奶边做爰视频| av天堂久久9| 侵犯人妻中文字幕一二三四区| 精品一区二区三卡| 大陆偷拍与自拍| 婷婷色麻豆天堂久久| 亚洲av电影在线观看一区二区三区| 久久国产精品影院| 欧美变态另类bdsm刘玥| 国产伦人伦偷精品视频| 国产女主播在线喷水免费视频网站| 欧美少妇被猛烈插入视频| 一边摸一边抽搐一进一出视频| www日本在线高清视频| 老司机靠b影院| 男女床上黄色一级片免费看| 欧美精品一区二区大全| 中文欧美无线码| 国产91精品成人一区二区三区 | 午夜视频精品福利| 无遮挡黄片免费观看| 亚洲成色77777| 中文字幕另类日韩欧美亚洲嫩草| 亚洲美女黄色视频免费看| 亚洲国产精品一区三区| 欧美日韩黄片免| 极品少妇高潮喷水抽搐| 少妇精品久久久久久久| 捣出白浆h1v1| 免费人妻精品一区二区三区视频| 搡老乐熟女国产| 欧美成人午夜精品| 99国产精品免费福利视频| 中文欧美无线码| 99热网站在线观看| 王馨瑶露胸无遮挡在线观看| av在线老鸭窝| 久久精品亚洲av国产电影网| 在线观看免费高清a一片| 精品国产超薄肉色丝袜足j| 19禁男女啪啪无遮挡网站| 日韩av在线免费看完整版不卡| 欧美日韩视频精品一区| 亚洲免费av在线视频| 天堂8中文在线网| 每晚都被弄得嗷嗷叫到高潮| 波野结衣二区三区在线| 777米奇影视久久| 亚洲中文字幕日韩| 成人免费观看视频高清| 男女下面插进去视频免费观看| 日本午夜av视频| 菩萨蛮人人尽说江南好唐韦庄| 99九九在线精品视频| 久久久精品免费免费高清| 午夜老司机福利片| 水蜜桃什么品种好| 国产精品九九99| 日韩大码丰满熟妇| 丁香六月欧美| 亚洲 国产 在线| 欧美日韩综合久久久久久| 各种免费的搞黄视频| 老司机深夜福利视频在线观看 | 国产91精品成人一区二区三区 | 欧美黑人精品巨大| 欧美日韩福利视频一区二区| 晚上一个人看的免费电影| 汤姆久久久久久久影院中文字幕| 水蜜桃什么品种好| 亚洲欧美精品自产自拍| 一本综合久久免费| 色网站视频免费| 国精品久久久久久国模美| 1024香蕉在线观看| 激情五月婷婷亚洲| 国产午夜精品一二区理论片| 久久久精品94久久精品| 少妇被粗大的猛进出69影院| 一级毛片电影观看| 在线观看免费视频网站a站| 在线av久久热| av在线app专区| 日韩伦理黄色片| 国产无遮挡羞羞视频在线观看| 一级,二级,三级黄色视频| www日本在线高清视频| 国产av精品麻豆| 国产1区2区3区精品| 国产成人一区二区在线| 91老司机精品| 一二三四社区在线视频社区8| 搡老乐熟女国产| 精品人妻在线不人妻| 亚洲综合色网址| 亚洲成人免费av在线播放| 国产欧美日韩综合在线一区二区| 亚洲专区中文字幕在线| 欧美日韩一级在线毛片| 999久久久国产精品视频| 中文欧美无线码| 一边摸一边做爽爽视频免费| 日韩大码丰满熟妇| 亚洲中文字幕日韩| 中文欧美无线码| 亚洲欧美激情在线| 免费人妻精品一区二区三区视频| 亚洲成人免费电影在线观看 | 女人被躁到高潮嗷嗷叫费观| 最黄视频免费看| 热re99久久精品国产66热6| 纵有疾风起免费观看全集完整版| www日本在线高清视频| 人体艺术视频欧美日本| 夫妻午夜视频| videos熟女内射| 老司机午夜十八禁免费视频| 久久久精品区二区三区| 一级毛片黄色毛片免费观看视频| 最近手机中文字幕大全| 性色av乱码一区二区三区2| 欧美乱码精品一区二区三区| 最近中文字幕2019免费版| 国产成人a∨麻豆精品| 欧美日本中文国产一区发布| 高潮久久久久久久久久久不卡| 欧美激情 高清一区二区三区| 亚洲欧洲精品一区二区精品久久久| 久久亚洲精品不卡| 国产片内射在线| 亚洲精品久久成人aⅴ小说| 777米奇影视久久| 亚洲第一av免费看| 亚洲综合色网址| 精品国产一区二区三区四区第35| 国产成人啪精品午夜网站| 国产精品香港三级国产av潘金莲 | 免费在线观看完整版高清| www.熟女人妻精品国产| 亚洲第一青青草原| xxxhd国产人妻xxx| 国产三级黄色录像| 99九九在线精品视频| 成人亚洲欧美一区二区av| 精品国产国语对白av| 人人妻人人澡人人爽人人夜夜| 国产成人a∨麻豆精品| 亚洲av日韩精品久久久久久密 | 国产成人一区二区在线| 啦啦啦中文免费视频观看日本| 亚洲精品美女久久av网站| 久久青草综合色| 国产欧美亚洲国产| 亚洲av片天天在线观看| 99精国产麻豆久久婷婷| 夜夜骑夜夜射夜夜干| 少妇裸体淫交视频免费看高清 | 亚洲成人免费电影在线观看 | 极品少妇高潮喷水抽搐| 国产精品人妻久久久影院| 国产一区有黄有色的免费视频| 精品久久蜜臀av无| 成年动漫av网址| 国产激情久久老熟女| 成人午夜精彩视频在线观看| 成人18禁高潮啪啪吃奶动态图| 宅男免费午夜| av在线播放精品| 成人免费观看视频高清| 夜夜骑夜夜射夜夜干| 国产免费福利视频在线观看| 亚洲国产精品成人久久小说| 汤姆久久久久久久影院中文字幕| 婷婷色综合www| 亚洲九九香蕉| 亚洲国产精品成人久久小说| 最新的欧美精品一区二区| 国产亚洲一区二区精品| 免费观看a级毛片全部| 欧美日韩亚洲高清精品| 免费观看a级毛片全部| 日韩中文字幕欧美一区二区 | 亚洲专区中文字幕在线| 亚洲国产av新网站| 无遮挡黄片免费观看| 啦啦啦在线观看免费高清www| 美女中出高潮动态图| 黑人猛操日本美女一级片| 午夜福利乱码中文字幕| 久久久久精品国产欧美久久久 | 99精国产麻豆久久婷婷| 成年人午夜在线观看视频| 日韩人妻精品一区2区三区| 国产黄色视频一区二区在线观看| 美女大奶头黄色视频| 一二三四在线观看免费中文在| 18在线观看网站| 亚洲精品国产区一区二| 精品一区二区三区四区五区乱码 | 亚洲欧洲国产日韩| 国产一区有黄有色的免费视频| 熟女少妇亚洲综合色aaa.| 欧美变态另类bdsm刘玥| 久久99热这里只频精品6学生| 欧美激情极品国产一区二区三区| 午夜91福利影院| 国产亚洲精品久久久久5区| 亚洲午夜精品一区,二区,三区| 男女边摸边吃奶| 啦啦啦啦在线视频资源| 日本wwww免费看| 亚洲国产毛片av蜜桃av| 欧美少妇被猛烈插入视频| 深夜精品福利| 精品少妇内射三级| 肉色欧美久久久久久久蜜桃| 一级黄色大片毛片| av福利片在线| 亚洲欧美色中文字幕在线| 夫妻午夜视频| 日本黄色日本黄色录像| 国产在视频线精品| 亚洲激情五月婷婷啪啪| 久久久久久久大尺度免费视频| 精品久久久久久电影网| h视频一区二区三区| 亚洲国产精品一区三区| 色94色欧美一区二区| 人妻人人澡人人爽人人| 亚洲激情五月婷婷啪啪| 亚洲国产欧美日韩在线播放| 亚洲人成电影免费在线| 免费黄频网站在线观看国产| 男女国产视频网站| 黄色一级大片看看| 免费日韩欧美在线观看| 国产成人影院久久av| 纯流量卡能插随身wifi吗| 日韩一卡2卡3卡4卡2021年| 亚洲国产看品久久| 黄色a级毛片大全视频| 国产精品一区二区在线观看99| www日本在线高清视频| 免费高清在线观看视频在线观看| 国产在线视频一区二区| 国产免费视频播放在线视频| 成年美女黄网站色视频大全免费| 九色亚洲精品在线播放| 久久精品亚洲av国产电影网| av天堂在线播放| 亚洲国产欧美在线一区| 国产成人一区二区在线| 欧美日韩国产mv在线观看视频| 国产福利在线免费观看视频| 国产无遮挡羞羞视频在线观看| 精品久久久久久电影网| 久热这里只有精品99| 亚洲欧美日韩高清在线视频 | 久久鲁丝午夜福利片| 亚洲国产最新在线播放| 中国美女看黄片| 中文字幕亚洲精品专区| 爱豆传媒免费全集在线观看| 久久天堂一区二区三区四区| 精品少妇内射三级| 男的添女的下面高潮视频| 狠狠精品人妻久久久久久综合| 国产一区亚洲一区在线观看| 欧美激情 高清一区二区三区| 国产高清国产精品国产三级| 看十八女毛片水多多多| 久久久久网色| 如日韩欧美国产精品一区二区三区| 国产在线一区二区三区精| 一边亲一边摸免费视频| 国产在线视频一区二区| 国产精品熟女久久久久浪| 91国产中文字幕| 极品少妇高潮喷水抽搐| 亚洲欧洲精品一区二区精品久久久| 女人久久www免费人成看片| 老司机深夜福利视频在线观看 | 我的亚洲天堂| 精品免费久久久久久久清纯 | e午夜精品久久久久久久| 欧美黑人精品巨大| 国产1区2区3区精品| 男女下面插进去视频免费观看| 欧美日韩黄片免| 成人国语在线视频| 免费在线观看完整版高清| 91九色精品人成在线观看| 中国美女看黄片| 国产深夜福利视频在线观看| 多毛熟女@视频| 国产精品.久久久| 9热在线视频观看99| 日本色播在线视频| 欧美在线黄色| 日本av手机在线免费观看| 久久中文字幕一级| 一区二区三区激情视频| 在线av久久热| 中文字幕人妻丝袜一区二区| 不卡av一区二区三区| 国产黄频视频在线观看| 亚洲国产毛片av蜜桃av| 我的亚洲天堂| 最近最新中文字幕大全免费视频 | 狂野欧美激情性xxxx| 欧美人与善性xxx| 99国产精品一区二区三区| 久久精品亚洲av国产电影网| 欧美av亚洲av综合av国产av| 亚洲欧美日韩高清在线视频 | 国产精品.久久久| 777久久人妻少妇嫩草av网站| 18禁黄网站禁片午夜丰满| 一区二区日韩欧美中文字幕| 热re99久久国产66热| 男女边摸边吃奶| av天堂在线播放| 青春草亚洲视频在线观看| 国产有黄有色有爽视频| 一区二区三区激情视频| 可以免费在线观看a视频的电影网站| 亚洲,欧美,日韩| 免费在线观看视频国产中文字幕亚洲 | 99热国产这里只有精品6| 精品一品国产午夜福利视频| 男男h啪啪无遮挡| 久久精品成人免费网站| 亚洲国产精品国产精品| 两个人看的免费小视频| 成年美女黄网站色视频大全免费| 黄色 视频免费看| 一级片'在线观看视频| 欧美日本中文国产一区发布| a 毛片基地| 欧美日韩福利视频一区二区| 考比视频在线观看| 免费一级毛片在线播放高清视频 | 香蕉丝袜av| 激情视频va一区二区三区| 十分钟在线观看高清视频www| 高清视频免费观看一区二区| 老司机深夜福利视频在线观看 | 国产1区2区3区精品| 1024视频免费在线观看| 国产亚洲av片在线观看秒播厂| 亚洲欧美日韩高清在线视频 | 一区二区三区激情视频| 久久久久视频综合| 91精品三级在线观看| 美女国产高潮福利片在线看| 欧美亚洲 丝袜 人妻 在线| videos熟女内射| 日本av手机在线免费观看| 交换朋友夫妻互换小说| 黑人巨大精品欧美一区二区蜜桃| 国产精品一区二区在线不卡| 国产熟女欧美一区二区| 老司机靠b影院| svipshipincom国产片| 午夜福利在线免费观看网站| 精品国产超薄肉色丝袜足j| 成人三级做爰电影| 国产成人精品在线电影| 亚洲熟女毛片儿| 婷婷丁香在线五月| 国产免费现黄频在线看| 国产亚洲一区二区精品| 大片电影免费在线观看免费| 国产精品一区二区在线观看99| 久久久精品区二区三区| 一边亲一边摸免费视频| 成在线人永久免费视频| 免费看av在线观看网站| 亚洲欧洲日产国产| 欧美日韩亚洲综合一区二区三区_| 欧美日韩黄片免| 多毛熟女@视频| 肉色欧美久久久久久久蜜桃| 狠狠精品人妻久久久久久综合| 久久午夜综合久久蜜桃| 久久99一区二区三区| av天堂在线播放| 日本av手机在线免费观看| 色精品久久人妻99蜜桃| 亚洲成人免费av在线播放| 丁香六月欧美| 在线观看免费日韩欧美大片|