成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Python多線程與多進程相關(guān)知識總結(jié)

Python多線程與多進程相關(guān)知識總結(jié)

熱門標簽:地圖標注線上如何操作 河北防封卡電銷卡 開封語音外呼系統(tǒng)代理商 天津電話機器人公司 400電話辦理哪種 應(yīng)電話機器人打電話違法嗎 電銷機器人的風(fēng)險 開封自動外呼系統(tǒng)怎么收費 手機網(wǎng)頁嵌入地圖標注位置

一、什么是進程

  • 進程是執(zhí)行中的程序,是資源分配的最小單位:操作系統(tǒng)以進程為單位分配存儲空間,進程擁有獨立地址空間、內(nèi)存、數(shù)據(jù)棧等
  • 操作系統(tǒng)管理所有進程的執(zhí)行,分配資源
  • 可以通過fork或 spawn的方式派生新進程,新進程也有自己獨立的內(nèi)存空間
  • 進程間通信方式(IPC,Inter-Process Communication)共享信息,實現(xiàn)數(shù)據(jù)共享,包括管道、信號、套接字、共享內(nèi)存區(qū)等。

二、什么是線程

  • 線程是CPU調(diào)度的的最小單位
  • 一個進程可以有多個線程
  • 同進程下執(zhí)行,并共享相同的上下文
  • 線程間的信息共享和通信更加容易
  • 多線程并發(fā)執(zhí)行
  • 需要同步原語

三、并發(fā)、并行

并發(fā)通常應(yīng)用于 I/O 操作頻繁的場景,并行則更多應(yīng)用于 CPU heavy 的場景。

3.1 并發(fā)

并發(fā)(concurrency),指同一時刻只能有一條指令執(zhí)行,多個線程的對應(yīng)的指令被快速輪換地執(zhí)行,線程/任務(wù)之間會互相切換。

  • 處理器先執(zhí)行線程 A 的指令一段時間,再執(zhí)行線程 B 的指令一段時間,再切回到線程 A,快速輪換地執(zhí)行。
  • 處理器切換過程中會進行上下文的切換操作,進行多個線程之間切換和執(zhí)行,這個切換過程非???,使得在宏觀上看起來多個線程在同時運行。
  • 每個線程的執(zhí)行會占用這個處理器一個時間片段,同一時刻,其實只有一個線程在執(zhí)行。

3.2 并行

并行(parallel) 指同一時刻,有多條指令在多個處理器上同時執(zhí)行

  • 不論是從宏觀上還是微觀上,多個線程都是在同一時刻一起執(zhí)行的。
  • 并行只能在多處理器系統(tǒng)中存在,如果只有一個核就不可能實現(xiàn)并行。并發(fā)在單處理器和多處理器系統(tǒng)中都是可以存在的,一個核就可以實現(xiàn)并發(fā)。

注意:具體是并發(fā)還是并行取決于操作系統(tǒng)的調(diào)度。

四、多線程適用場景

多線程/多進程是解決并發(fā)問題的經(jīng)典模型之一。

在一個程序進程中,有一些操作是比較耗時或者需要等待的,比如等待數(shù)據(jù)庫的查詢結(jié)果的返回,等待網(wǎng)頁結(jié)果的響應(yīng)。這個線程在等待的過程中,處理器是可以執(zhí)行其他的操作的,從而從整體上提高執(zhí)行效率。

比如網(wǎng)絡(luò)爬蟲,在向服務(wù)器發(fā)起請求之后,有一段時間必須要等待服務(wù)器的響應(yīng)返回,這種任務(wù)屬于 IO 密集型任務(wù)。對于這種任務(wù),啟用多線程可以在某個線程等待的過程中去處理其他的任務(wù),從而提高整體的爬取效率。

還有一種任務(wù)叫作計算密集型任務(wù),或者稱為CPU 密集型任務(wù)。任務(wù)的運行一直需要處理器的參與。如果使用多線程,一個處理器從一個計算密集型任務(wù)切換到另一個計算密集型任務(wù),處理器依然不會停下來,并不會節(jié)省總體的時間,如果線程數(shù)目過多,進程上下文切換會占用大量的資源,整體效率會變低。

所以,如果任務(wù)不全是計算密集型任務(wù),我們可以使用多線程來提高程序整體的執(zhí)行效率。尤其對于網(wǎng)絡(luò)爬蟲這種 IO 密集型任務(wù)來說,使用多線程會大大提高程序整體的爬取效率,多線程只適合IO 密集型任務(wù)。

五、Python GIL

由于 Python 中 GIL 的限制,導(dǎo)致不論是在單核還是多核條件下,在同一時刻只能運行一個線程,導(dǎo)致 Python 多線程無法發(fā)揮多核并行的優(yōu)勢。

GIL 全稱為 Global Interpreter Lock(全局解釋器鎖),是 Python 解釋器 CPython 中的一個技術(shù)術(shù)語,是Python之父為了數(shù)據(jù)安全而設(shè)計的。

CPython 使用引用計數(shù)來管理內(nèi)存,所有 Python 腳本中創(chuàng)建的實例,都會有一個引用計數(shù),來記錄有多少個指針指向它。當(dāng)引用計數(shù)只有 0 時,則會自動釋放內(nèi)存。每隔一段時間,Python 解釋器就會強制當(dāng)前線程去釋放 GIL,Python 3 以后版本的間隔時間是 15 毫秒。

在 Python 多線程下,每個線程輪流執(zhí)行:

  • 獲取 GIL
  • 執(zhí)行對應(yīng)線程的代碼
  • 釋放 GIL

某個線程想要執(zhí)行,必須先拿到 GIL,并且在一個 Python 進程中,GIL 只有一個,導(dǎo)致即使在多核的條件下,同一時刻也只能執(zhí)行一個線程。每一個線程執(zhí)行完一段后,會釋放 GIL,以允許別的線程開始利用資源。

六、Python多線程、多進程實例:CPU 密集型任務(wù)

6.1 單線程

執(zhí)行一個CPU 密集型任務(wù):

import time
import os

def cpu_bound_task(n):
    print('當(dāng)前進程: {}'.format(os.getpid()))
    while n > 0:
        n -= 1

if __name__ == "__main__":
    print('主進程: {}'.format(os.getpid()))
    start = time.time()
    for i in range(2):
        cpu_bound_task(100000000)
    end = time.time()
    print(f"耗時{end - start}秒")

輸出:

主進程: 10104
當(dāng)前進程: 10104
當(dāng)前進程: 10104
耗時10.829032897949219秒

6.2 多線程

import os
import threading
import time


def cpu_bound_task(n,i):
    print(f'子線程 {threading.current_thread().name}:{os.getpid()} - 任務(wù){(diào)i}')
    while n > 0:
        n -= 1

if __name__=='__main__':
    start = time.time()
    print(f'主線程: {os.getpid()}')
    thread_list = []
    for i in range(1, 3):
        t = threading.Thread(target=cpu_bound_task, args=(100000000,i))
        thread_list.append(t)

    for t in thread_list:
        t.start()

    for t in thread_list:
        t.join()

    end = time.time()
    print(f"耗時{end - start}秒")
  • start():啟動線程
  • join():等待子線程結(jié)束后主程序才退出,便于計算所有進程執(zhí)行時間。

輸出:

主線程: 1196
子線程 Thread-1:1196 - 任務(wù)1
子線程 Thread-2:1196 - 任務(wù)2
耗時10.808091640472412秒

可以發(fā)現(xiàn)多線程對CPU 密集型任務(wù)性能沒有提升效果。

6.3 多進程

from multiprocessing import Process
import os
import time

def cpu_bound_task(n,i):
    print(f'子進程: {os.getpid()} - 任務(wù){(diào)i}')
    while n > 0:
        n -= 1

if __name__=='__main__':
    print(f'父進程: {os.getpid()}')
    start = time.time()
    p1 = Process(target=cpu_bound_task, args=(100000000,1))
    p2 = Process(target=cpu_bound_task, args=(100000000,2))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    end = time.time()
    print(f"耗時{end - start}秒")

輸出:

父進程: 22636
子進程: 18072 - 任務(wù)1
子進程: 9580 - 任務(wù)2
耗時6.264241933822632秒

也可以使用Pool類創(chuàng)建多進程

from multiprocessing import Pool, cpu_count
import os
import time

def cpu_bound_task(n,i):
    print(f'子進程: {os.getpid()} - 任務(wù){(diào)i}')
    while n > 0:
        n -= 1

if __name__=='__main__':
    print(f"CPU內(nèi)核數(shù):{cpu_count()}")
    print(f'父進程: {os.getpid()}')
    start = time.time()
    p = Pool(4)
    for i in range(2):
        p.apply_async(cpu_bound_task, args=(100000000,i))
    p.close()
    p.join()
    end = time.time()
    print(f"耗時{end - start}秒")

輸出:

CPU內(nèi)核數(shù):8
父進程: 18616
子進程: 21452 - 任務(wù)0
子進程: 16712 - 任務(wù)1
耗時5.928101301193237秒

七、Python多線程、多進程實例:IO密集型任務(wù)

7.1 單線程

IO 密集型任務(wù):

def io_bound_task(self, n, i):
    print(f'子進程: {os.getpid()} - 任務(wù){(diào)i}')
    print(f'IO Task{i} start')
    time.sleep(n)
    print(f'IO Task{i} end')

if __name__=='__main__':
    print('主進程: {}'.format(os.getpid()))
    start = time.time()
    for i in range(2):
        self.io_bound_task(4,i)
    end = time.time()
    print(f"耗時{end - start}秒")

輸出:

主進程: 2780
子進程: 2780 - 任務(wù)0
IO Task0 start
IO Task0 end
子進程: 2780 - 任務(wù)1
IO Task1 start
IO Task1 end
耗時8.04494023323059秒

7.2 多線程

print(f"CPU內(nèi)核數(shù):{cpu_count()}")
print(f'父進程: {os.getpid()}')
start = time.time()
p = Pool(2)
for i in range(2):
    p.apply_async(io_bound_task, args=(4, i))
p.close()
p.join()
end = time.time()
print(f"耗時{end - start}秒")

輸出:

CPU內(nèi)核數(shù):8
父進程: 1396
子進程: 2712 - 任務(wù)0
IO Task0 start
子進程: 10492 - 任務(wù)1
IO Task1 start
IO Task0 endIO Task1 end

耗時4.201171398162842秒

可以看出對于IO密集型任務(wù),Python多線程具有顯著提升。

7.3 多進程

print(f'父進程: {os.getpid()}')
start = time.time()
p1 = Process(target=io_bound_task, args=(4, 1))
p2 = Process(target=io_bound_task, args=(4, 2))
p1.start()
p2.start()
p1.join()
p2.join()
end = time.time()
print("耗時{}秒".format((end - start)))

輸出:

父進程: 12328
子進程: 12452 - 任務(wù)2
IO Task2 start
子進程: 16896 - 任務(wù)1
IO Task1 start
IO Task1 endIO Task2
end
耗時4.1241302490234375秒

7.4 協(xié)程

IO型任務(wù)還可以使用協(xié)程,協(xié)程比線程更加輕量級,一個線程可以擁有多個協(xié)程,協(xié)程在用戶態(tài)執(zhí)行,完全由程序控制。一般來說,線程數(shù)量越多,協(xié)程性能的優(yōu)勢越明顯。這里就不介紹Python協(xié)程了,下面Python代碼是協(xié)程的其中一種實現(xiàn)方式:

import asyncio
import time

async def io_bound_task(self,n,i):
    print(f'子進程: {os.getpid()} - 任務(wù){(diào)i}')
    print(f'IO Task{i} start')
    # time.sleep(n)
    await asyncio.sleep(n)
    print(f'IO Task{i} end')

if __name__ == '__main__':        
    start = time.time()
    loop = asyncio.get_event_loop()
    tasks = [io_bound_task(4, i) for i in range(2)]
    loop.run_until_complete(asyncio.wait(tasks))
    loop.close()
    end = time.time()
    print(f"耗時{end - start}秒")

輸出:

子進程: 5436 - 任務(wù)1
IO Task1 start
子進程: 5436 - 任務(wù)0
IO Task0 start
IO Task1 end
IO Task0 end
耗時4.008626461029053秒

八、總結(jié)

Python 由于GIL鎖的存在,無法利用多進程的優(yōu)勢,要真正利用多核,可以重寫一個不帶GIL的解釋器, 比如JPython(Java 實現(xiàn)的 Python 解釋器)。

某些Python 庫使用C語言實現(xiàn),例如 NumPy 庫不受 GIL 的影響。在實際工作中,如果對性能要求很高,可以使用C++ 實現(xiàn),然后再提供 Python 的調(diào)用接口。另外Java語言也沒有GIL限制。

對于多線程任務(wù),如果線程數(shù)量很多,建議使用Python協(xié)程,執(zhí)行效率比多線程高。

到此這篇關(guān)于Python多線程與多進程相關(guān)知識總結(jié)的文章就介紹到這了,更多相關(guān)Python多線程與多進程內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python多進程的使用詳情
  • python實現(xiàn)多進程并發(fā)控制Semaphore與互斥鎖LOCK
  • python 多進程和多線程使用詳解
  • python 實現(xiàn)多進程日志輪轉(zhuǎn)ConcurrentLogHandler
  • Python 多進程原理及實現(xiàn)
  • python多進程基礎(chǔ)詳解

標簽:山東 六盤水 蘭州 宿遷 江蘇 成都 常州 駐馬店

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Python多線程與多進程相關(guān)知識總結(jié)》,本文關(guān)鍵詞  Python,多,線程,與,進程,相關(guān),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Python多線程與多進程相關(guān)知識總結(jié)》相關(guān)的同類信息!
  • 本頁收集關(guān)于Python多線程與多進程相關(guān)知識總結(jié)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产精品欧美大片| 亚洲伦理久久| 午夜大片在线观看| 国产欧美 在线欧美| 喷水视频在线观看| 国产中文字幕视频在线观看| 尤物视频在线观看免费| 国产 中文 字幕 日韩 在线| 在线观看一区二区精品视频| igao视频网在线视频| 伊人精品在线观看| 懂色aⅴ精品一区二区三区| 污视频在线看网站| 国产精品久久国产愉拍| h在线观看免费| 青青草国产成人av片免费| 久久综合综合久久综合| 久久午夜无码鲁丝片| 婷婷丁香一区二区三区| 久久久av毛片精品| 亚洲综合另类小说| 日韩精品视频观看| 91精品国产一区二区三区香蕉| 国产精久久久| 欧美日韩美少妇| 免费看成人av| 欧美日韩在线高清| 国产色婷婷亚洲99精品小说| 国产成人精品a视频一区www| 久久精品xxxxx| 热门国产精品亚洲第一区在线| 369你懂的电影天堂| 久久综合资源网| 日韩午夜在线观看视频| 高清不卡一区二区三区| 欧美日韩国产综合久久| 欧美一区二区公司| 少妇精品无码一区二区三区| аⅴ资源新版在线天堂| 久久视频国产精品免费视频在线| 美女任你摸久久| 欧美三级午夜理伦| 欧美视频亚洲色图| 男女黄床上色视频| 欧美日本高清视频| 99在线精品观看| 欧美综合在线视频观看| 日本搞黄视频| 国产又粗又黄又爽| 成人精品视频99在线观看免费| 久久久免费视频网站| 一级黄色av片| 国产精品视频一区二区图片| 欧美日韩视频网站| 蜜桃av麻豆av天美av免费| 久久久久久草| 国产亚洲一区二区三区四区| 日韩精品视频网站| 自拍偷拍欧美| 欧美日韩一区二区电影| 欧美国产精品| 中文字幕在线永久在线视频| 亚洲黄色毛片| 美女久久久久久久久| 成人黄色大片在线观看| 亚洲视频在线观看免费| 国产精品久久久亚洲第一牛牛| 国产三区在线成人av| 日韩精品在线观看视频| 成人h版在线观看| 久久久久久国产精品| 99精品视频在线看| 成年美女网站| 粉嫩av一区二区三区天美传媒| 日韩成人高清在线| 欧美裸体男粗大视频在线观看| 国产一区二区三区四区大秀| 久久中文字幕电影| 欧美黄色片免费观看| 亚洲色图都市小说| 久久机热这里只有精品| 精品人妻无码一区二区性色| 免费成人动漫| 免费成人在线视频网站| 日本中文字幕在线视频| 欧美视频日韩视频| 国产精品玖玖玖| 色综合av在线| 国产成人激情视频| 国产乱色国产精品免费视频| 欧美激情二区三区| 美日韩免费视频| 成人无码av片在线观看| 波波电影院一区二区三区| 日本熟妇乱子伦xxxx| 热久久精品国产| 97在线视频免费观看| 亚洲人体偷拍| 中文字幕在线不卡一区| 国产黑人绿帽在线第一区| 99国产精品久久久久久久久久久| 少妇高潮 亚洲精品| 日本女优爱爱视频| 91成人免费观看| 亚洲字幕一区二区| 图片区偷拍区小说区| 69av一区二区三区| 成人伦理视频网站| 97视频资源在线观看| 国产91免费看| eeuss影影院www在线播放| 交视频在线观看国产| 国产精品一区二区中文字幕| 国产精品视频播放| 在线播放/欧美激情| 天天操天天摸天天爽| 色哟哟中文字幕| 中文字幕日韩免费视频| **精品中文字幕一区二区三区| 毛片.com| 国产成人精品网站| 国产精品久久久久av电视剧| 九九热在线免费视频| 中文字幕伦av一区二区邻居| 欧美日本韩国一区二区| 亚洲毛片一区| 9191国语精品高清在线| 午夜免费在线观看精品视频| 日韩电影在线视频| 白嫩情侣偷拍呻吟刺激| 一级性生活毛片| 国产1区2区3区精品美女| 奇米一区二区三区四区久久| 中文字幕视频在线免费欧美日韩综合在线看| 成人网ww555视频免费看| 爱情岛亚洲播放路线| 影音欧美亚洲| 日本少妇性生活| 亚洲一区二区三区在线免费观看| www.日本三级| 久久精品日产第一区二区| 国产91免费在线观看| 麻豆精品一区| 精品亚洲国产视频| 精品视频在线视频| 欧美精品videofree1080p| 亚洲熟女乱色一区二区三区久久久| 欧美一区二区视频在线播放| 久久精品99久久无色码中文字幕| 7777精品伊人久久久大香线蕉完整版| 成人资源www网在线最新版| 欧美一区二区三区视频免费| 国产一区二区三区久久精品| 天堂网av在线播放| 亚洲第一在线播放| 天天天综合网| 色猫猫国产区一区二在线视频| 国产.欧美.日韩| 九九热视频这里只有精品| 国产 欧美 精品| 久久久久久久久久久妇女| 欧美韩国日本在线观看| 久久精品视频一区| 国产精品外国| 国产精品美女久久久久aⅴ国产馆| 国产精品久久久久久久久婷婷| 日韩欧美国产午夜精品| 国产精品视频白浆免费视频| 久久久久无码国产精品| 精品国产一二区| 精品国产免费一区二区三区四区| 女同一区二区三区| 男人午夜影院| 麻豆av一区二区| 黄页大全在线免费观看| 欧美h版电影| 中文字幕毛片| 国产成人综合在线播放| 538任你躁精品视频网免费| 邻家有女韩剧在线观看国语| 欧美插插视频| 亚洲最大的免费视频网站| 亚洲欧美日韩成人高清在线一区| 色婷婷狠狠18禁久久| 成人爽a毛片一区二区| 亚洲国产电影在线观看| 69久久99精品久久久久婷婷| 99久久精品久久亚洲精品| 亚洲欧美强伦一区二区| 国产精品v日韩精品v在线观看| 国内精品久久久久久影视8| 国产一区二区三区影视| 男人天堂亚洲二区| 亚洲第一页av| 超碰在线观看免费版| 日韩av密桃| 一本到12不卡视频在线dvd| 国产jizz| 久久亚洲无码视频| 超碰在线人人爱| 第三区美女视频在线| 午夜影院免费视频| 欧美又粗又硬又大久久久| 免费看的黄网站| 欧美黑人猛猛猛| 欧美在线播放| 日韩有码av| 亚洲人成绝费网站色www| 中文字幕乱码在线| 国产毛片毛片毛片毛片毛片毛片| 国产免费拔擦拔擦8x高清在线人| 天天综合永久入口| 三年片免费观看大全| 粉嫩av一区二区三区粉嫩| 日本肉体xxxx裸体xxx免费| 欧美激情小视频| 亚洲激情网站| 香蕉一区二区| 欧美猛交xxxxx| 欧美多人野外伦交| 国产综合香蕉五月婷在线| 另类视频在线观看+1080p| 亚洲综合精品国产一区二区三区| 国产精品国模大尺度私拍| 日韩欧洲国产| 蜜桃精品视频在线观看| 麻豆影视国产在线观看| 午夜欧洲一区| 日韩在线观看视频网站| 色播色播色播色播色播在线| 国产九一视频| 久久久久久免费观看| www中文字幕在线观看| 国产日产精品一区二区三区四区| 国产在线视频2019最新视频| 久久亚洲成人精品| 久久精品一区二区三区不卡免费视频| 亚洲精品精品一区| 中文字幕一二三区在线观看| 福利网站av| 18+视频在线观看| 久久国产精品影片| 婷婷综合久久一区二区三区| 亚洲精品国产品国语在线| 国语精品一区| www三级免费| 婷婷五月综合久久中文字幕| 日韩av自拍| 亚洲精品国产品国语在线| 久久久国产视频| 91欧美日韩一区| 爱爱视频网站免费| 久久久精品免费| 在线看片线路1| 欧美精品国产精品| 熟女性饥渴一区二区三区| 亚洲av网址在线| 欧美在线观看视频| 亚洲成人自拍视频| 国产激情91久久精品导航| 国产亚洲成av人片在线观看| 一级二级黄色片| 欧美激情20| 天天舔天天操天天干| 久久品道一品道久久精品| 久久精品免视看| 一二美女精品欧洲| 国产丶欧美丶日本不卡视频| 欧美日韩国产色视频| 日韩精品久久久毛片一区二区| 日本aaa视频| 欧美xxxxxxxxx59| …久久精品99久久香蕉国产| 日韩久久久久久久久久久久| 99久热这里只有精品视频免费观看| 亚洲永久精品大片| 成人三级做爰av| 天堂中文在线免费观看| 四虎影院在线免费播放| 国产一区二区三区站长工具| 亚洲欧美一区二区三区久本道91| 亚洲大香人伊一本线| av在线不卡免费看| 三上悠亚免费在线观看| 欧美在线不卡区| 欧美中文字幕第一页| 人妻无码视频一区二区三区| 久久亚洲电影| 69成人免费视频| 国产成人av免费看| 亚洲高清不卡在线观看| 91老司机福利在线| 国产精品无码专区av免费播放| xvideos成人免费中文版| 欧美黄网站在线观看| http://嫩草影院| 激情综合色丁香一区二区| 六月丁香婷婷色狠狠久久| 99re这里都是精品| 91高清国产视频| 成人一区二区| 国产a级网站| 欧美精品久久久久久久多人混战| 国产精品久久久久久久一区二区| 日韩在线观看成人| 欧美三级黄网| 午夜精品美女久久久久av福利| 亚洲国产精品综合小说图片区| 亚洲www.| 精品久久香蕉国产线看观看亚洲| 久久久久99人妻一区二区三区| 欧美系列电影免费观看| 精品无码人妻少妇久久久久久| 亚洲视频在线免费播放| 91精品视频在线看| 国产精品白丝一区二区三区| 国产福利精品av综合导导航| 国产在线播放精品| 国产精品无码人妻一区二区在线| 欧美大黄免费观看| 中文字幕在线观看一区二区| www.26天天久久天堂| 免费欧美日韩| 国产成+人+亚洲+欧美+综合| 亚洲欧洲午夜| 国产精品久久久久久久久久久久久久久久| 5566日本婷婷色中文字幕97| jizzjizz16|