999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的并行編程技術在批量氣象規范報表入庫處理中的應用

2018-08-13 11:34:26郭學兵
軟件 2018年7期
關鍵詞:進程生態

郭學兵

?

基于Python的并行編程技術在批量氣象規范報表入庫處理中的應用

郭學兵

(中國科學院地理科學與資源研究所生態系統網絡觀測與模擬重點實驗室,北京 100101)

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

中國生態系統研究網絡;CERN;python;并行編程;多進程;氣象;報表;轉換入庫

0 引言

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

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

CERN傳統氣象數據報表轉換入庫處理程序采用微軟Windows環境下OFFICE COM對象(Component Object Model)的面向對象編程方法,在Microsoft Visual Foxpro6.0編程環境下實現對Excel文件的讀寫(顯式或隱式運行Excel 應用,操作工作薄、工作表對象,實現數據存取操作等),實現從Excel數據到VFP數據庫表(.dbf文件)的數據移動[2]。然后再將.dbf文件數據表升遷到Oracle數據庫。

這種傳統的數據處理方法需要不斷地進行I/O處理,因此造成處理時間過長[3],不能充分利用計算機性能,導致數據處理效率低下(CERN單一指標的數據處理大約耗費半小時)。

隨著CERN野外生態站個數、監測指標個數不斷增加等情況出現,數據采集正朝著海量化方向發展,這對數據處理和質量控制的效率提出了更高挑戰;同時,計算機硬件技術也日新月異地發展,處理器性能不斷提高,且多核處理器已成為當前處理器技術的發展方向,這些硬件變化的同時引領軟件研發發生了基礎性變化。基于多核的并行處理是充分發揮多核CPU強大運算能力的有效途徑,并行計算模式正成為當前及未來程序開發的發展趨勢,具有十分廣闊的應用價值[4]。

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

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

1 多線程并行程序設計方法概述

根據對并行處理技術的綜述性文獻內容進行歸納總結,多線程并行程序設計方法目前主要包括以下幾種[6]:

(1)顯示線程編程

并行編程可以調用系統函數啟動多線程,例如:Pthreads、Java線程類、微軟Widows線程API。

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

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

? Intel TBB:Intel Thread Building Block編譯器

(3)利用并行應用庫編程

? Intel IPPMKL,ScalaPACK、PARDISO

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

(4)并行程序語言編程

目前有150種以上并行編程語言,其中Python是著名的一種并行程序開發語言,有進程池概念,不用自己創建進程。

(5)MapReduce

MapReduce是一種基于Google云計算平臺的分布式編程模型,其云計算基礎架構包括3個相互獨立又緊密結合的系統(分布式文件系統GFS、并行編程模型和任務調度模型MapReduce、處理結構化以及半結構化數據的大規模分布式數據庫Bigtable)。Apache Hadoop是一種由Java語言編寫的運行在Linux 操作系統之上的開源云計算平臺,由HDFS(Hadoop Distribute File System)和Hadoop MapReduce 兩個核心部件組成,二者分別是GFS 和Google MapReduce的開源實現,Hadoop目前已經成為大數據領域事實上的標準[8]。

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

本文重點討論應用Python面向對象的動態的高級程序設計語言,基于其并行程序編程方法以及強大科學計算功能而開發并行處理程序,實現CERN批量氣象規范報表的快速轉換入庫的方法和技術。

2 Python并行編程

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

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

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

3 CERN氣象規范報表數據處理流程及并行化方法分析

3.1 數據轉換抽象模型

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

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

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

(2)轉換目標表(to_Table)

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

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

(3)數據轉換抽象模型

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

圖2 數據轉換抽象模型示例(氣溫T為例)

3.2 數據轉換入庫方法和流程

(1)數據轉換過程

循環處理各生態站(第一層循環)、各年份(第二層循環)、各指標(第三層循環)。

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

(2)數據入庫過程

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

采用Sqlldr命令將合并后數據文件裝入Oracle數據庫,最終共生成78張目標表格:

例如氣溫日值表T2的控制文件T2.ctl(里面引用氣溫日值數據文件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 處理流程并行化分析及其關鍵技術

(1)數據轉換過程的并行化方法分析

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

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

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

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

● run_Radi_D5程序處理輻射小時類數據一類報表。

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

(2)數據轉換函數代碼編寫

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

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

(3)并行化關鍵技術

實現“多進程”編程首先要導入multiprocessing站點包,建立進程池pool,并將待并行運行的代碼以函數形式傳遞給進程,實現動態映射任務,從而實現并行。其核心代碼如下:

import multiprocessing as mp #-----導入多進程支持模塊

from multiprocessing import Pool #-----導入多進程支持模塊下的進程池

通過建立多進程mp的進程池pool,可以提供指定數量的進程供用戶調用,當有新的請求提交到pool中時,如果池還沒有滿,就會創建一個新的進程用來執行該請求;如果池中的進程數已經達到規定最大值,那么該請求就會等待,直到池中有進程結束,才會創建新的進程來執行它。

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

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

#-----處理所有年份的數據,本次僅處理1年的數據

YEAR=[2014]

#-----所有生態站代碼,共44個生態站待處理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"]

#-----申請非阻塞式并行的進程池,最大進程數processes可設為1、2、4、8、16等。以處理8個指標為例。維持執行的進程總數為processes,當一個進程執行完畢后會添加新的進程進去

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,), )

#-----關閉進程池。調用join之前,先調用close函數,執行完close后不會有新的進程加入到pool

pool.close()

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

#-----啟動主程序,申請并行執行

if __name__ == "__main__":

apply_async()

4 并行編程運行效果分析

試驗環境:4核Intel? Xeon? CPU E3-1225 v5,內存16 GB,主頻3.30 GHz。Python版本2.7,處理44個生態站2014年的8個指標數據。

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

圖3 并行編程不同運行效果比對

結果顯示:

(1)傳統串行運行與并行一個進程的執行時間相差無幾,甚至并行一個進程比串行執行耗費時間更長,原因是并行一個進程時,計算機為多進程處理建立進程池開銷反而超過了串行進程;

(2)并行處理顯著加快了處理效率,并行4個進程的處理效率基本上是傳統串行的執行效率的4倍。

(3)并行4個進程時(實際上邏輯進程已達8個,達到操作系統并行進程最大數),此時轉換處理時間可達最少。隨后即使增加最大并行進程數,也不會減短程序耗費時間,說明已達到計算機處理的極限;

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

(5)并行4個進程時(實際上邏輯進程已達8個,達到操作系統并行最大數),此時CPU占比已近100%,達到計算機CPU的極限;

(6)串行或并行進程數小于等于4個時,內存占比幾乎不變,這是因為內存占比主要受單一指標轉換處理時的內存使用率(單一指標數據量大小)影響,和進程數相關關系很小;反倒是并行進程數大于16個時,內存占比增加,主要受進程數增多導致的進程池本身內存開銷增大的影響。

5 結語

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

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

[1] 楊萍, 于秀波, 莊緒亮, 牛棟. 中國科學院中國生態系統研究網絡(CERN)的現狀及未來發展思路[J]. 中國科學院院刊, 2008, 23(6): 555-561.

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

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

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

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

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

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

[8] 應毅, 劉亞軍. MapReduce并行計算技術發展綜述[J]. 計算機系統應用. 2014. 23(4): 1-6, 11.

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

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

[11] 中國生態系統研究網絡. 生態系統大氣環境觀測規范[專著]。P125-129.

[12] 沈佩娟, 湯荷美. 1995. 數據庫管理及應用開發, 清華大學出版社, 206-221.

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

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

[15] 百度百科. SMP對稱多處理結構. https://baike.baidu.com/ item/SMP對稱多處理結構/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

中國科學院戰略性先導科技專項(A類)(XDA19020301)資助

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

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

猜你喜歡
進程生態
“生態養生”娛晚年
保健醫苑(2021年7期)2021-08-13 08:48:02
住進呆萌生態房
學生天地(2020年36期)2020-06-09 03:12:30
生態之旅
生態之旅
生態之旅
債券市場對外開放的進程與展望
中國外匯(2019年20期)2019-11-25 09:54:58
生態
領導文萃(2015年4期)2015-02-28 09:19:05
我國高等教育改革進程與反思
教育與職業(2014年7期)2014-01-21 02:35:04
Linux僵死進程的產生與避免
男女平等進程中出現的新矛盾和新問題
主站蜘蛛池模板: 97成人在线视频| 97在线免费视频| 国产91蝌蚪窝| 91系列在线观看| 一级做a爰片久久免费| 狠狠v日韩v欧美v| 日韩av在线直播| 伊伊人成亚洲综合人网7777| 亚洲资源站av无码网址| 久久久久人妻精品一区三寸蜜桃| 欧美a级在线| 国产精欧美一区二区三区| 亚洲日韩AV无码一区二区三区人| 国产微拍一区二区三区四区| 欧美日韩在线国产| 国产正在播放| 在线观看精品自拍视频| 综合亚洲网| 欧美日韩国产在线观看一区二区三区| 波多野结衣在线se| 欧美色视频在线| 国内熟女少妇一线天| 久久久久久久久18禁秘| 试看120秒男女啪啪免费| 久久中文电影| 国产精品女在线观看| 凹凸精品免费精品视频| 久夜色精品国产噜噜| 日韩在线观看网站| 性欧美精品xxxx| 亚洲香蕉伊综合在人在线| 久久这里只有精品免费| 嫩草影院在线观看精品视频| 91黄视频在线观看| 男女性午夜福利网站| 伦精品一区二区三区视频| 国产欧美又粗又猛又爽老| 在线永久免费观看的毛片| 国产综合无码一区二区色蜜蜜| 国产极品美女在线观看| 色网在线视频| 农村乱人伦一区二区| 精品久久香蕉国产线看观看gif| aa级毛片毛片免费观看久| 日韩精品一区二区三区免费| 国产69精品久久| 中文字幕久久波多野结衣| 国产精品99久久久| 国产一线在线| 狠狠做深爱婷婷综合一区| 制服丝袜国产精品| 久久99久久无码毛片一区二区| av手机版在线播放| 色哟哟国产精品| 亚洲精品日产AⅤ| 99视频在线观看免费| 亚洲欧洲自拍拍偷午夜色无码| 国产精品一区二区在线播放| 精品国产一二三区| 日韩美毛片| 爽爽影院十八禁在线观看| 亚洲一区二区约美女探花| 国产v欧美v日韩v综合精品| 欧美日韩国产精品va| 小说区 亚洲 自拍 另类| 狼友视频一区二区三区| 国产v精品成人免费视频71pao| 美女啪啪无遮挡| 欧美性久久久久| 日韩av无码DVD| 精品欧美视频| 中日无码在线观看| 国产又色又爽又黄| 国外欧美一区另类中文字幕| 伊人天堂网| 最新日本中文字幕| 国产免费a级片| 日韩欧美中文在线| 日本精品视频| 91蜜芽尤物福利在线观看| 国产午夜精品一区二区三区软件| 白浆视频在线观看|