0

DB から CSV ファイルにデータを抽出する Python スクリプトがあります。pyodbcを使用して DB にアクセスし、クエリを実行しています。また、クエリをファイルに出力するために csv.writer を使用しています。

with open(source_filename, 'w', newline='') as source_file:
    csv.writer(source_file, quoting=csv.QUOTE_NONNUMERIC).writerows(db_cursor)

スクリプトはデータベース内のすべてのテーブルを出力するため、1 つずつではなくバックグラウンド処理を使用して抽出を高速化したいと考えています。Pythonでこれを行う方法はありますか?

Multiprocessing を使用してみましたが、酸洗いエラーを回避できませんでした。

ありがとう

4

2 に答える 2

2

マルチスレッド化は、並列処理を実現するための軽量な方法ですが、ドキュメントにあるように、「スレッド化は、順次依存しないタスクを分離するための手法です」。何を並行して実行するかを決定するには、依存関係がどこにあるかを知る必要があります。単一のディスク ストアに支えられたデータベースに複数のクエリを並行して送信すると、順次送信するよりも速く結果が返されるかどうかは明らかではありません。

于 2012-09-11T00:23:21.523 に答える
0

     マルチスレッド プロセスを作成する必要があります。元のプロセスは新しいスレッドを開始し、データベースへのアクセスとファイルの書き込みを行いますが、元のプロセスはそのビジネスを続行します。
      また、データベースにアクセスして同じデータを取得する複数のプロセスを作成するのではなく、単一のバックグラウンド プロセスを使用します。より安全に、より速く、より簡単にデバッグできます。

于 2012-09-11T20:20:07.190 に答える