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

主頁 > 知識庫 > 分析詳解python多線程與多進程區(qū)別

分析詳解python多線程與多進程區(qū)別

熱門標簽:哈爾濱外呼系統(tǒng)代理商 獲客智能電銷機器人 南昌辦理400電話怎么安裝 湛江電銷防封卡 鄭州智能外呼系統(tǒng)運營商 不錯的400電話辦理 佛山防封外呼系統(tǒng)收費 徐州天音防封電銷卡 電話機器人適用業(yè)務(wù)

python的多線程比較雞肋,優(yōu)先使用多進程

1 基礎(chǔ)知識

現(xiàn)在的 PC 都是多核的,使用多線程能充分利用 CPU 來提供程序的執(zhí)行效率。

1.1 線程

線程是一個基本的 CPU 執(zhí)行單元。它必須依托于進程存活。一個線程是一個execution context(執(zhí)行上下文),即一個 CPU 執(zhí)行時所需要的一串指令。

1.2 進程

進程是指一個程序在給定數(shù)據(jù)集合上的一次執(zhí)行過程,是系統(tǒng)進行資源分配和運行調(diào)用的獨立單位??梢院唵蔚乩斫鉃椴僮飨到y(tǒng)中正在執(zhí)行的程序。也就說,每個應(yīng)用程序都有一個自己的進程。

每一個進程啟動時都會最先產(chǎn)生一個線程,即主線程。然后主線程會再創(chuàng)建其他的子線程

1.3 兩者的區(qū)別

  • 線程必須在某個進行中執(zhí)行。
  • 一個進程可包含多個線程,其中有且只有一個主線程。
  • 多線程共享同個地址空間、打開的文件以及其他資源。
  • 多進程共享物理內(nèi)存、磁盤、打印機以及其他資源。

2 Python 多進程

2.1 創(chuàng)建多進程

Python 要進行多進程操作,需要用到muiltprocessing庫,其中的Process類跟threading模塊的Thread類很相似。所以直接看代碼熟悉多進程。

方法1:直接使用Process

代碼如下:

from multiprocessing import Process  
def show(name):
    print("Process name is " + name)
if __name__ == "__main__": 
    proc = Process(target=show, args=('subprocess',))  
    proc.start()  
    proc.join()

方法2:繼承Process來自定義進程類,重寫run方法

代碼如下:

from multiprocessing import Process
import time
class MyProcess(Process):
    def __init__(self, name):
        super(MyProcess, self).__init__()
        self.name = name
    def run(self):
        print('process name :' + str(self.name))
        time.sleep(1)
if __name__ == '__main__':
    for i in range(3):
        p = MyProcess(i)
        p.start()
    for i in range(3):
        p.join()

2.2 多進程通信

進程之間不共享數(shù)據(jù)的。如果進程之間需要進行通信,則要用到Queue模塊或者Pipi模塊來實現(xiàn)。

Queue

Queue 是多進程安全的隊列,可以實現(xiàn)多進程之間的數(shù)據(jù)傳遞。它主要有兩個函數(shù),put和get。

put() 用以插入數(shù)據(jù)到隊列中,put 還有兩個可選參數(shù):blocked 和 timeout。如果 blocked 為 True(默認值),并且 timeout 為正值,該方法會阻塞 timeout 指定的時間,直到該隊列有剩余的空間。如果超時,會拋出 Queue.Full 異常。如果 blocked 為 False,但該 Queue 已滿,會立即拋出 Queue.Full 異常。

get()可以從隊列讀取并且刪除一個元素。同樣,get 有兩個可選參數(shù):blocked 和 timeout。如果 blocked 為 True(默認值),并且 timeout 為正值,那么在等待時間內(nèi)沒有取到任何元素,會拋出 Queue.Empty 異常。如果blocked 為 False,有兩種情況存在,如果 Queue 有一個值可用,則立即返回該值,否則,如果隊列為空,則立即拋出 Queue.Empty 異常。

具體用法如下:

from multiprocessing import Process, Queue
 def put(queue):
    queue.put('Queue 用法')
 if __name__ == '__main__':
    queue = Queue()
    pro = Process(target=put, args=(queue,))
    pro.start()
    print(queue.get())   
    pro.join()

Pipe

Pipe的本質(zhì)是進程之間的用管道數(shù)據(jù)傳遞,而不是數(shù)據(jù)共享,這和socket有點像。pipe() 返回兩個連接對象分別表示管道的兩端,每端都有send() 和recv()函數(shù)。

如果兩個進程試圖在同一時間的同一端進行讀取和寫入那么,這可能會損壞管道中的數(shù)據(jù)。

具體用法如下:

from multiprocessing import Process, Pipe
 def show(conn):
    conn.send('Pipe 用法')
    conn.close()
 if __name__ == '__main__':
    parent_conn, child_conn = Pipe() 
    pro = Process(target=show, args=(child_conn,))
    pro.start()
    print(parent_conn.recv())   
    pro.join()

2.3 進程池

創(chuàng)建多個進程,我們不用傻傻地一個個去創(chuàng)建。我們可以使用Pool模塊來搞定。

Pool 常用的方法如下:

具體用法見示例代碼:

from multiprocessing import Pool
def show(num):
    print('num : ' + str(num))
if __name__=="__main__":
    pool = Pool(processes = 3)
    for i in xrange(6):
        # 維持執(zhí)行的進程總數(shù)為processes,當一個進程執(zhí)行完畢后會添加新的進程進去
        pool.apply_async(show, args=(i, ))       
    print('======  apply_async  ======')
    pool.close()
    #調(diào)用join之前,先調(diào)用close函數(shù),否則會出錯。執(zhí)行完close后不會有新的進程加入到pool,join函數(shù)等待所有子進程結(jié)束
    pool.join()

3 Python 多線程

3.1 GIL

其他語言,CPU 是多核時是支持多個線程同時執(zhí)行。但在 Python 中,無論是單核還是多核,同時只能由一個線程在執(zhí)行。其根源是 GIL 的存在。

GIL 的全稱是 Global Interpreter Lock(全局解釋器鎖),來源是 Python 設(shè)計之初的考慮,為了數(shù)據(jù)安全所做的決定。某個線程想要執(zhí)行,必須先拿到 GIL,我們可以把 GIL 看作是“通行證”,并且在一個 Python 進程中,GIL 只有一個。拿不到通行證的線程,就不允許進入 CPU 執(zhí)行。

而目前 Python 的解釋器有多種,例如:

  • CPython:CPython 是用C語言實現(xiàn)的 Python 解釋器。 作為官方實現(xiàn),它是最廣泛使用的 Python 解釋器。
  • PyPy:PyPy 是用RPython實現(xiàn)的解釋器。RPython 是 Python 的子集, 具有靜態(tài)類型。這個解釋器的特點是即時編譯,支持多重后端(C, CLI, JVM)。PyPy 旨在提高性能,同時保持最大兼容性(參考 CPython 的實現(xiàn))。J
  • ython:Jython 是一個將 Python 代碼編譯成 Java 字節(jié)碼的實現(xiàn),運行在JVM (Java Virtual Machine) 上。另外,它可以像是用 Python 模塊一樣,導(dǎo)入 并使用任何Java類。IronPython:IronPython 是一個針對 .NET 框架的 Python 實現(xiàn)。它 可以用 Python 和 .NET framewor k的庫,也能將 Python 代碼暴露給 .NET 框架中的其他語言。

GIL 只在 CPython 中才有,而在 PyPy 和 Jython 中是沒有 GIL 的。
每次釋放 GIL鎖,線程進行鎖競爭、切換線程,會消耗資源。這就導(dǎo)致打印線程執(zhí)行時長,會發(fā)現(xiàn)耗時更長的原因。

3.2 創(chuàng)建多線程

Python提供兩個模塊進行多線程的操作,分別是thread和threading,

前者是比較低級的模塊,用于更底層的操作,一般應(yīng)用級別的開發(fā)不常用。

方法1:直接使用threading.Thread()

import threading
# 這個函數(shù)名可隨便定義
def run(n):
    print("current task:", n)
if __name__ == "__main__":
    t1 = threading.Thread(target=run, args=("thread 1",))
    t2 = threading.Thread(target=run, args=("thread 2",))
    t1.start()
    t2.start()

方法2:繼承threading.Thread來自定義線程類,重寫run方法

import threading
class MyThread(threading.Thread):
    def __init__(self, n):
        super(MyThread, self).__init__()  # 重構(gòu)run函數(shù)必須要寫
        self.n = n
    def run(self):
        print("current task:", n)
if __name__ == "__main__":
    t1 = MyThread("thread 1")
    t2 = MyThread("thread 2")
    t1.start()
    t2.start()

3.3 線程合并

Join函數(shù)執(zhí)行順序是逐個執(zhí)行每個線程,執(zhí)行完畢后繼續(xù)往下執(zhí)行。主線程結(jié)束后,子線程還在運行,join函數(shù)使得主線程等到子線程結(jié)束時才退出。

import threading
def count(n):
    while n > 0:
        n -= 1
if __name__ == "__main__":
    t1 = threading.Thread(target=count, args=("100000",))
    t2 = threading.Thread(target=count, args=("100000",))
    t1.start()
    t2.start()
    # 將 t1 和 t2 加入到主線程中
    t1.join()
    t2.join()

3.4 線程同步與互斥鎖

線程之間數(shù)據(jù)共享的。當多個線程對某一個共享數(shù)據(jù)進行操作時,就需要考慮到線程安全問題。threading模塊中定義了Lock 類,提供了互斥鎖的功能來保證多線程情況下數(shù)據(jù)的正確性。

用法的基本步驟:

#創(chuàng)建鎖
mutex = threading.Lock()
#鎖定
mutex.acquire([timeout])
#釋放
mutex.release()

其中,鎖定方法acquire可以有一個超時時間的可選參數(shù)timeout。如果設(shè)定了timeout,則在超時后通過返回值可以判斷是否得到了鎖,從而可以進行一些其他的處理。

具體用法見示例代碼:

import threading
import time
num = 0
mutex = threading.Lock()
class MyThread(threading.Thread):
    def run(self):
        global num 
        time.sleep(1)
        if mutex.acquire(1):  
            num = num + 1
            msg = self.name + ': num value is ' + str(num)
            print(msg)
            mutex.release()
if __name__ == '__main__':
    for i in range(5):
        t = MyThread()
        t.start()

3.5 可重入鎖(遞歸鎖)

為了滿足在同一線程中多次請求同一資源的需求,Python 提供了可重入鎖(RLock)。
RLock內(nèi)部維護著一個Lock和一個counter變量,counter 記錄了 acquire 的次數(shù),從而使得資源可以被多次 require。直到一個線程所有的 acquire 都被 release,其他的線程才能獲得資源。

具體用法如下:

#創(chuàng)建 RLock
mutex = threading.RLock()
class MyThread(threading.Thread):
    def run(self):
        if mutex.acquire(1):
            print("thread " + self.name + " get mutex")
            time.sleep(1)
            mutex.acquire()
            mutex.release()
            mutex.release()

3.6 守護線程

如果希望主線程執(zhí)行完畢之后,不管子線程是否執(zhí)行完畢都隨著主線程一起結(jié)束。我們可以使用setDaemon(bool)函數(shù),它跟join函數(shù)是相反的。它的作用是設(shè)置子線程是否隨主線程一起結(jié)束,必須在start() 之前調(diào)用,默認為False。

3.7 定時器

如果需要規(guī)定函數(shù)在多少秒后執(zhí)行某個操作,需要用到Timer類。具體用法如下:

from threading import Timer 
def show():
    print("Pyhton")
# 指定一秒鐘之后執(zhí)行 show 函數(shù)
t = Timer(1, hello)
t.start()  

4 選擇多線程還是多進程?

在這個問題上,首先要看下你的程序是屬于哪種類型的。一般分為兩種 CPU 密集型 和 I/O 密集型。

  • CPU 密集型:程序比較偏重于計算,需要經(jīng)常使用 CPU 來運算。例如科學(xué)計算的程序,機器學(xué)習(xí)的程序等。
  • I/O 密集型:顧名思義就是程序需要頻繁進行輸入輸出操作。爬蟲程序就是典型的 I/O 密集型程序。

如果程序是屬于 CPU 密集型,建議使用多進程。而多線程就更適合應(yīng)用于 I/O 密集型程序。

以上就是分析詳解python多線程與多進程區(qū)別的詳細內(nèi)容,更多關(guān)于python多線程與多進程區(qū)別的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • 手把手帶你了解python多進程,多線程
  • Python多進程共享numpy 數(shù)組的方法
  • 總結(jié)python多進程multiprocessing的相關(guān)知識
  • Python多線程與多進程相關(guān)知識總結(jié)
  • python實現(xiàn)多進程并發(fā)控制Semaphore與互斥鎖LOCK
  • python 多進程和多線程使用詳解
  • python 實現(xiàn)多進程日志輪轉(zhuǎn)ConcurrentLogHandler
  • Python多進程與多線程的使用場景詳解
  • python多進程執(zhí)行方法apply_async使用說明
  • Python 多進程原理及實現(xiàn)
  • python多線程和多進程關(guān)系詳解
  • Python多進程的使用詳情

標簽:吉安 懷化 蕪湖 呂梁 蘭州 廣西 紹興 安康

巨人網(wǎng)絡(luò)通訊聲明:本文標題《分析詳解python多線程與多進程區(qū)別》,本文關(guān)鍵詞  分析,詳解,python,多,線程,;如發(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多線程與多進程區(qū)別》相關(guān)的同類信息!
  • 本頁收集關(guān)于分析詳解python多線程與多進程區(qū)別的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产在线超碰| 国产伦精品一区二区三区视频金莲| 在线中文字幕av| 黄色视屏免费在线观看| 国产ts一区二区| 亚洲欧美日韩国产中文| 97超碰免费观看| 美女激情视频网站| 国产美女精品一区二区三区| 成人激情视频小说免费下载| 五月婷婷综合色| 免费看黄色a级片| 亚洲欧美视频| 欧美在线aaa| wwww在线观看免费视频| 51精品国产| 日韩欧美aaa| 日本精品一区二区三区视频| 好男人看片在线观看免费观看国语| 成人综合av| 99视频热这里只有精品免费| 国产白丝网站精品污在线入口| 欧美黄色大片网站| 成人综合色站| 国产高清一区在线观看| 91精品国产91久久久久久青草| 国产精品女主播av| 999在线视频| 亚洲综合av网| 国产欧美日韩专区发布| 精品区在线观看| 日韩电影免费观| 国产精品四虎| gogo人体高清视频| 日批视频免费在线观看| 亚洲欧美小说色综合小说一区| 日韩久久电影| 亚洲一区电影在线观看| 亚洲精品自拍第一页| 成人在线免费观看av| 丁香激情综合国产| 亚洲综合国产精品| 久久精品国产第一区二区三区最新章节| 激情懂色av一区av二区av| 向日葵视频成人app网址| 精品毛片一区二区三区| 激情久久中文字幕| 国产欧美精品一区二区三区四区| 精品一区二区三区在线成人| 日本福利午夜视频在线| 久久国产精品99久久久久久丝袜| www.5588.com毛片| 7777精品伊人久久久大香线蕉完整版| 人人干人人草| 青娱乐国产精品视频| 色香色香欲天天天影视综合网| 91久久精品国产91久久| 色天使综合视频| 国产成人强伦免费视频网站| 日韩精品自拍偷拍| 男女无套免费视频网站动漫| 亚洲黄页在线观看| 日韩av影院在线观看| 日本精品一区二区三区在线播放| 国产精品偷伦视频免费观看了| 精品国产免费视频| 91.www| 免费女人黄页| 午夜成人亚洲理伦片在线观看| 二人午夜免费观看在线视频| 国产精品久久久久影院亚瑟| 久久日韩粉嫩一区二区三区| 亚洲女人天堂成人av在线| 交100部在线观看| 美女999久久久精品视频| 美女日批免费视频| 亚洲激情在线观看| 黄色欧美日韩| 亚洲一区二三区| 日韩一区二区三| 国产亚洲黄色片| 亚洲精品三级| 中文在线免费一区三区| 亚洲xxxx3d动漫| 黄色三级生活片| 亚洲另类欧美日韩| 粉嫩高潮美女一区二区三区| 成人性教育av免费网址| 成人中文字幕在线观看| 夜夜骚av一区二区三区| 欧美在线播放| 制服丝袜av在线| 亚洲第一精品福利| 亚洲欧美自拍偷拍色图| 9.1成人看片免费版| 欧美日韩一区二区在线播放| 日本xxxxxxxxx18| 国产精品丝袜一区二区三区| 狠狠干 狠狠操| 亚洲无吗一区二区三区| 国产精品第56页| 猫咪av在线| 国产精品久久久久久久久久久久久久| 亚洲成人激情av| 奴色虐av一区二区三区| 5月婷婷6月丁香| 国产成人亚洲精品播放器下载| 国产精品毛片大码女人| 久久青青色综合| 国产成人久久精品麻豆二区| 91精品国产乱码久久久久久久| dy888亚洲精品一区二区三区| 337p亚洲精品色噜噜狠狠| 日韩精品电影一区二区三区| 日本午夜精品一区二区三区| 欧美福利网址| 日韩美女爱爱视频| 26uuu久久噜噜噜噜| 日韩一级片在线免费观看| 日韩成人一级大片| 日本日本19xxxⅹhd乱影响| 亚洲精品自产拍| 亚洲小说区图片区| 欧美美女搞黄| 中文字幕 自拍偷拍| 久久久国产精品网站| 亚洲欧洲精品一区二区三区| 国产精品久久久久久久久久久久久| www.黄色com| 噜噜噜久久亚洲精品国产品小说| 欧美一二区视频| 国模大尺度视频一区二区| 亚洲精品福利在线| 亚洲国产aⅴ天堂久久| 黄在线观看免费网站ktv| 欧美国产1区2区| 99久久亚洲精品日本无码| 99热这里只有精品4| 日本不卡在线| 久久精品色欧美aⅴ一区二区| 欧美成人午夜免费视在线看片| 黄视频在线观看免费| 免费a级人成a大片在线观看| 狼人综合视频| 日韩欧美在线国产| 1024在线播放| 久草手机视频在线观看| 无码人妻精品一区二区三区夜夜嗨| 麻豆国产尤物av尤物在线观看| 午夜老司机在线观看| 台湾佬综合网| 伦理欧美一区| 美女脱光衣服与内衣内裤一区二区三区四区| 8mav模特福利视频在线观看| 精品乱码亚洲一区二区不卡| 欧美在线播放高清精品| 黄网站在线观看永久免费| 日韩精品一区国产麻豆| 国产成人一区二区三区影院| 欧美日韩国产色综合一二三四| 亚洲精品自拍网| 91麻豆成人精品国产免费网站| 日韩在线卡一卡二| 久久香蕉网站| 午夜国产在线观看| 日韩精品亚洲视频| 韩国三级电影久久久久久| 不用播放器的免费av| 久青草视频在线观看| 97精品视频在线观看| 欧美va亚洲va日韩∨a综合色| 国产精品成人一区二区艾草| √天堂资源地址在线官网| 久久精品首页| 国产亚洲午夜| 黄色成人在线| 这里只有精品9| 国产麻豆免费视频| 久青草免费视频| 亚洲天堂av电影| 成人资源在线| 国产精品一区二区在线观看网站| 香港经典三级在线| 日本午夜激情视频| 免费看的黄色欧美网站| 热久久天天拍国产| 丁香激情五月婷婷| 丰满人妻中伦妇伦精品app| 国产伦理片在线观看| 两根大肉大捧一进一出好爽视频| 欧美性猛交xxxx乱大交极品| 自拍视频在线网| 蜜桃视频在线观看免费视频网站www| 精品国产欧美一区二区三区成人| 亚洲一卡二卡| 在线观看黄网| √天堂资源在线| av亚洲产国偷v产偷v自拍| 国模极品一区二区三区| 久久久久久无码精品大片| 国产一区二区精品调教| 超碰在线资源站| 91精品国产777在线观看| 椎名由奈av一区二区三区| 日韩精品在在线一区二区中文| 中文字幕少妇一区二区三区| 日韩福利电影在线观看| 牛牛澡牛牛爽一区二区| 日韩av电影国产| 一分钟免费观看视频播放www| freexxx性亚洲精品| 中文字幕在线2019| 欧美成ee人免费视频| 亚洲欧洲一区二区三区在线观看| 国产欧美综合在线观看第十页| 91ts人妖另类精品系列| 自拍偷拍激情视频| 啪一啪鲁一鲁2019在线视频| 欧美国产综合一区二区| 色呦呦网站在线观看| 成人在线免费看| 欧美在线观看一区二区三区| 久久综合久久综合九色| gogogo影视剧免费观看在线观看| 91九色porn蝌蚪| 91成人天堂久久成人| 亚洲乱码国产乱码精品精| 久久久久久97| 夜夜嗨av一区二区三区中文字幕| 精品国产乱码一区二区三区| 欧美一区,二区| 秋霞在线观看av| 亚洲av无码一区二区三区性色| 精品女同一区二区三区在线观看| 中文字幕日韩欧美在线视频| 台湾成人免费视频| 国自产精品手机在线观看视频| 欧美色999| 国产精品美女一区二区在线观看| 自拍偷拍第八页| 国产成a人亚洲精v品无码| 中文字幕av免费专区久久| 国产老肥熟一区二区三区| 国产欧美一区视频| 日本少妇久久久| 狂野欧美性猛交xxxx乱大交| 日本韩国欧美国产| 久久先锋影音av鲁色资源| 日韩在线观看免费高清| 国产99久久精品一区二区 夜夜躁日日躁| 激情校园亚洲图片| 天天干天天操天天做| 亚洲人成网站免费播放| 最好看的中文字幕久久| 欧美日韩激情视频在线观看| 特黄毛片在线观看| 成人在色线视频在线观看免费大全| av成人综合| 色综合视频网站| www成人免费观看| youjizz.com国产| 亚洲免费大片| 日韩精品极品视频在线观看免费| 欧美高清videos高潮hd| 欧美激情一级二级三级在线视频| 91精品国产乱码久久久久久| 青青草91久久久久久久久| 国内精品视频一区| 国产精品久久久久久久久久久久| 欧美电影三区| 欧美国产一级片| 日韩午夜免费视频| eeuss影院www免费影院| 国产伦精品一区二区三区免费迷| 欧美一级特黄aaa| 视频一区中文字幕国产| 日韩欧美国产精品一区二区三区| 三级国产在线观看| 亚洲欧洲一区二区三区久久| 91免费版黄色| 无码一区二区三区| 欧美va亚洲va国产综合| 国产传媒一区二区三区| 91精品一区二区三区久久久久久| 99免费精品视频| 欧美性色黄大片手机版| 亚洲精品久久久久avwww潮水| 国产激情自拍| free极度另类性欧美| 亚洲图片欧美午夜| 日韩最新中文字幕电影免费看| 日韩免费视频播放| 日韩精品一区二区三区免费观影| 国产熟女高潮视频| 九九视频在线播放| 亚洲av无码片一区二区三区| 欧美三级一区二区三区| 夜夜骑日日操| 国产一区二区高清不卡| 久久综合伊人77777麻豆最新章节| 日韩一级精品| 国产精品视频一区二区久久| 成人午夜在线免费| 欧美重口乱码一区二区| 欧美gay1069大粗吊| 欧美黑人欧美精品刺激| 91超碰在线观看| 在线成人高清不卡| 日韩欧美的一区二区| 床上的激情91.| 一本一本久久a久久精品综合妖精| 欧美裸体一区二区三区| 亚洲女爱视频在线| 91久久偷偷做嫩草影院电| 伊人av在线| 妞干网免费在线视频| 小早川怜子久久精品中文字幕| 蜜臀尤物一区二区三区直播| 一区三区自拍| 国产裸体舞一区二区三区| 国产精品高清无码在线观看| 精品国产亚洲一区二区麻豆| 亚洲国产精品一区二区第四页av| www.8ⅹ8ⅹ羞羞漫画在线看| 99久久人妻精品免费二区| 国产免费裸体视频| 亚洲成a人片77777老司机| 日韩写真福利视频在线|