2017-01-10 6 views
3

を遮断Multihreadingダウンローダ。しかし、私はダウンロードされたリンクプリントアウトしたときに、それが糸のように見えるには、例えば、並列に動作されていません。Pythonの:私はこのように動作します無限のマルチスレッドダウンローダを持ってお互い

time 0 - thread 1 - link 1 
time 1 - thread 1 - link 2 
time 2 - thread 1 - link 3 
time 3 - thread 1 - link 4 
time 4 - thread 2 - link 5 
time 5 - thread 2 - link 6 
time 6 - thread 2 - link 7 
time 7 - thread 3 - link 8 
time 8 - thread 3 - link 9 
time 9 - thread 3 - link 10 
time 10 - thread 1 - link 11 
time 11 - thread 1 - link 12 
私はそれがよりようになることを期待し

:スレッド1 2 3 4 1 2 3 4サーバー4 cpusを持っています。

おかげ

+0

リクエストコードを表示できますか? – Eloims

+0

「時間」はどのように測定していますか?あなたはどのくらいの頻度で 'キュー'にリンクを挿入しますか? 'downloader'はどれくらいの時間をかけて完了しますか? ( 'downloader'の各実行が次のリンクが' queue'に挿入される前に完了することは可能ですか?)また、マルチスレッド化は必ずしもすべてのCPUを使用するとは限りません。また、1つのCPU上にマルチスレッド化されています。 –

+0

短く: 'session = requests.Session()' 'session.cookies = login_cookies.copy()' 'リンクのリンク: ' ' data = session.get(url、params = {... }) ' ' if data.status_code == 200: ' ' fp = open(ファイルパス、 'wb') ' ' fp.write(data.content) ' ' fp.close() ' – Greno

答えて

0

ダブル出力ファイル(複数可)、どこで、各スレッドが書き込みさを確認してください。書き込みロックにより、コードが予想以上に連続して実行される可能性があります。

+0

良い点は、私は 'content'のために別のキューを作成し、ファイル操作を別のスレッドに移すことになります。 –

+0

@a_guest:悪い考えではありません、私はそれを試します:) – Greno

+0

@a_guest:ありがとう、今それは働いています:) – Greno

関連する問題