2012-01-19 8 views
2

urllib2で比較的大きなファイル(それぞれ10MB)をダウンロードしてからjsonファイルとして読み込んでmysqlデータベースにデータを挿入し、無限ループダウンロードには1分ほどかかり、すべてをmysqlにロードします。メインスレッドがPythonを使ってmysqlに挿入している間に、ダウンロードを行うスレッドを作成する方法はありますか?ファイルを同時にダウンロードしてPythonでmysqlデータベースに挿入する

私の擬似コード:

while 1: 
download file with urllib2 
decode as json file 
extract data I want 
do some computations on data 
insert data into mysql 

はありがとうございました!

+0

ツイスト。ツイストは常に答えです。 –

+0

ツイステッド(イグナシオが言ったように)やトルネードは、どちらも非同期です。 –

答えて

2

あなたができることは、スレッドとキューを使用することです。ファイルIOスレッドはファイルを読み込んで処理し、その結果をキューに挿入します。キューでは、結果がデータベースIOスレッドによって検出され、処理されます。むしろ例をアップコードよりも、私はここであなたを指示されます:http://www.ibm.com/developerworks/aix/library/au-threadingpython/

代わりに、あなたは、複数のファイルを管理するためのpython selectモジュールを使用することができ、彼らが完了などの操作を読み、それらを一つずつ処理しますhttp://docs.python.org/library/select.html

+0

マルチプロセッシング(またはプロセスプール)coludが安全かもしれません。 –

+0

複数のプロセッサが有用である場合には、CPUバインド操作の良い点があります。 IOバインドされた状況では、余分なプロセッサーは心配ではありません。 – philofinfinitejest

+0

驚くばかり、私が探していたもの。だから私は自分のコードで与えられた例の "実行"関数を変更する必要がありますか? – jh314

関連する問題