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のサブスレッド