ホワイトPythonの学習記録マルチスレッドクロールTSフラグメント

 

lxmlのインポートetreeの
 インポート要求
 から urllibはインポート要求
 のインポート、インポート、OS
 からのキューのインポートキューの
 インポートスレッド
 輸入からマルチプロセッシングインポートプール
 から urllibはのインポート要求
 デフ(URL)をダウンロードしてください:
     のためのインデックスの範囲(0,1342 :)
        のn = インデックス
         の場合(指数<= 999 )。
            N = STR(N).zfill(3 
            N = STR(n)の
         #のプリント(N) 
        URL = " https://zy.512wx.com/20171106/vM1OOVna/1200kb/hls/ppvod1983%s.ts "n個
         の印刷" URL " 、URL)
        urls.put(URL)
クラスの消費者(threading.Thread):
     デフ __init__(自己、URLを、* argsを、** kwargsから):
        スーパー(消費者、自己)。__init__(* argsを、** kwargsから)
        self.urls = のURL
        self.queueLock = threading.Lock()
     defを実行します(自己):
         しばらく真:
             もしself.urls.empty():
                 ブレーク
            
                self.queueLock.acquire()
                ファイル = self.urls.get()
                self.queueLock。リリース() = file.split(' / ' - [1)]
                 プリント" 名称" 、名)
                開く(" ./video/ {} " .format(名)、" WB " FPなど)
                     場合 os.access(" ./video/ {} " .format(名)、os.F_OKは):
                         合格
                    
                        RESP = requests.get(ファイル、ベリファイ= 偽)
                        fp.write( resp.content)
                プリント(名+ " 下载完成" DEF get_ts(のURL): オープンと" ./video/kuiba.ts "" WB " FPなど)
         のためのインデックス範囲(0、lenの(URLの) ):
            RESP =  requests.get(URLの[インデックス])
            fp.write(resp.content)
            プリント(STR(インデックス)+ " 下载完成" DEF メイン():
    のURL =キュー(2000 
    ダウンロード(URLの)
    つつないurls.empty (): 
         プリント(urls.get())
    のためのインデックス範囲(0,16 ):
        X = 消費者(のURL)
        x.start()
もし __name__ == ' __main__ ' 
    メイン()

ここで開かれた16のサブスレッド

 

おすすめ

転載: www.cnblogs.com/jswf/p/12350057.html