2011-12-13 40 views
0

大きなファイルをWebから開きたいが、完全にダウンロードする前に処理を開始したい。 私が望むのは、urllib2のようなものですが、バックグラウンドでファイルをダウンロードする別のスレッドがあります。 これはファイルと同じインタフェースを持ちます: ダウンロードされたより多くのバイトが読み込まれた場合、メインスレッドはそれをブロックします。 バイトがすでに存在する場合は、すぐに読み込みが戻ります。 すべてがダウンロードされると、追加のダウンローダスレッドが終了します。 すべてが読み込まれると、EOFが発生します。非同期のURLオープナー(Python)

これを行う組み込みモジュールがありますか?

+1

より良い句読点と、正しくご質問を構築してください、などの文はこれが読めません! – tito

答えて

0

私はこれに見えた: http://mail.python.org/pipermail/python-bugs-list/2007-April/038250.html と、この: https://stackoverflow.com/a/1517728/498782

とあなたのためのバッファリングリーダーを思い付いた:

url_resource = urllib2.urlopen(url) 
CHUNK = 8 * 1024 
while True: 
    chunk_data = url_resource.read(CHUNK) 
    if not chunk_data: 
     break 
    process(chunk_data) 

しかし、上記の通話を遮断含まれているに注意してください。非同期の仕事のためにあなたは、このに見ることができます。

http://docs.python.org/library/asyncore.html