2016-08-11 20 views
0

50個のURLからファイルのダウンロード時間を確認するにはどうすればよいですか?私は私の帯域幅全体を使用して各ファイルからダウンロードしたいと思います、私はマルチスレッドやコルーチンを使用するか、単純な古い同期方法を使用する必要がありますか?どうして?python(スレッドまたは非同期)の複数のURLからファイルのダウンロード時間を確認するには?

これは私が単一のURLからダウンロード時間をチェックするために使用するコードです:マルチスレッドとPythonでコルーチンはまだだけ一度に一つのPythonの命令を実行するためにGlobal Interpreter Lock (GIL)によって制限されている

import urllib 
import time 

start = time.time() 
with urllib.urlopen('http://example.com/file') as response: 
    data = response.read() 
    end = time.time() 

duration = end - start 

答えて

0

。 Pythonコードが、通常のPythonコードでマルチスレッドまたはコルーチンを使用しているだけで、入力や出力などの遅延のない並列計算を実行すると、実際には並列に実行されません。各スレッドはダウンロードによって遅延されるため、I/O境界になります。

ダウンロードが完全にI/Oバインドされているため、マルチスレッドまたはコルーチンは正常に動作するはずです。オーバーヘッドが懸念される場合は、結果を2つのバージョンと比較します。

ダウンロードしたデータを大容量ファイルから捨てる場合は、ストリーミングとiter_content methodを使用して、必要以上に多くのデータを保持しないようにしてください。

+0

私は並行性が新ですので、説明できますか?マルチスレッドやコルーチンを使用していても、ダウンロードは他のURLより後に行われますか? –

+0

私はGILの説明を@Shankarに追加しました。 –

関連する問題