0

私は、API から 10,000 人の「人」を収集し、他の 2 つの API にそれらに関するさらにデータを収集し、情報をローカル データベースに保存するように要求する Python スクリプトを持っています。1 人あたり約 0.9 秒かかります。

そのため、現時点では完了するまでに非常に長い時間がかかります。マルチスレッドはこれを高速化するのに役立ちますか? ローカルでマルチスレッド テストを試してみたところ速度は遅くなりましたが、このテストは単純な関数であり、API のやり取りや Web/ディスク関連は何もありませんでした。

ありがとう

4

1 に答える 1

0

コアはいくつありますか?

プロセスはどの程度並列化可能ですか?

問題は CPU バウンドですか?

複数のコアがあり、それらの間で並列化できる場合、速度が向上する可能性があります。マルチスレッドのオーバーヘッドは、ひどく実装されない限りほぼ 100% ではないため、これはプラスです。

一方、遅い部分が CPU バウンドである場合は、C 拡張機能または Cython を調べた方がはるかに実り多い可能性があります。これらは両方とも、単純にmultiprocessing. 明らかに、100 倍の高速化は、変換されたコードのみを対象としています。

しかし、真剣に、プロファイル。これよりもはるかに簡単にアクセスできる、ぶら下がっている果物がある可能性があります。ライン プロファイラー (たとえば、line_profiler[とも呼ばれるkernprof]) と組み込みの cProfile を試してください。

于 2013-09-24T21:21:02.643 に答える