当時、ダウンロードが完了した場合、時には、たくさんの写真やビデオのアドレスを取得することを決議爬虫類は、別のものをダウンロードして行くので、効率が遅すぎる、あなたは基本的な手順を使用して、スレッドプールのスレッドプールを使用することができます次のとおりです。
1.スケジュールされたタスク機能
2.スレッドプールを作成task_pool = threadpool.ThreadPool(N)スレッドの数を定義し、n個のスレッドの数であります
3.タスクthreadpool.makeRequestsスレッド(タスク機能、パラメータリスト)を作成し、主要なパラメータは、反復的でなければならない、そのようなリスト、タスクリストとthreadpool.makeRequestsとして下記を参照してください、すべてのタスクを取得するために利用可能なすべての拡張()関数を一覧表示するフォームを返しますケース
4.タスクリストやマップforループの繰り返し処理を使用して、スレッドプール、task.putRequest(REQ)に入れたタスクのリストを作成します(task.putRequest、task_list)
5.タスクを実行し、すべてのタスクは、タスクが実際に開始し、このステップを実行する)(threadpool.waitを終えたのを待ちます
コード例:
インポートThreadPoolの インポート時間 DEFのFOO(N): プリント(N-) time.sleep( 2 ) T1 = time.time() task_pool = threadpool.ThreadPool(10) #は、スレッドプールスレッド10作成 task_list = [] #タスクリスト = DATA_LIST [私のために私が中範囲(10)] #パラメータのリストを作成 task_list.extendを(threadpool.makeRequests(FOO、DATA_LIST)) #スレッドのタスクを作成 するために REQ にtask_list: task_pool.putRequest(REQ) #タスクは、プールのスレッドに入れて 印刷する(「スタート................... 」) task_pool.wait() #タスクの起動 T2を= time.time() 印刷( T1-T2) #の計算経過時間
結果:
...................出発0162 73 4 5 8 9 2.06499981880188
結果から:
1. task_pool.waitは()本当に始めたとき、タスクの実行を
実際に同時にタスクを実行することを示す障害の結果2.
各一時停止中3.foo機能2秒、時間と再び行うためにあれば、マルチスレッド使用して、2 * 10秒を要するが(のみ2.06秒かかった実際に私は100のタスク、2.05秒の100スレッドの実行時間を試してみました)、効果は明らかスレッドプールであることを示します。