0

私は、人口からサンプルを取り出して、サンプルで何らかの操作をしたいと思っています。私はPythonでこれをプログラムしたいと思います。マルチプロセッシング、マルチスレッディング、またはmap-reduceのようなものを使用する必要がありますか? そして、本当に高速であれば、どうすればテストできますか?私のMacbook-Airでは、単純なプリントアウトのためにスレッディングを使用すると高速ではなく、通常のループを実行すると高速になります。並列計算でPythonプログラムを高速化する方法は?

+0

ようこそスタックオーバーフロー。すべては分析する必要があるサンプルの数に依存し、それらのサイズに依存します。一般的に10億以上のものがあれば、コード内でいくつかの最適化をしているだけで普通のループ以上のものは必要ありませんが、一般化されています。より具体的な情報を提供すれば、誰かを助けることができます。各サンプルのサイズ、実行する必要があるサンプルに対する操作、ストレージ内のサンプル数。 – nakashu

+1

ヘルプを提供するには、現在あなたが何をしようとしているのか見てみるとよいでしょう。たぶん、単純化したバージョンのコードを投稿することができます。 – Dave

+0

ありがとうございました。 私が本当にやりたいことをより正確に知っていると、私はより具体的になります。 単純なfor-loopを実行するときにPythonで1000回 "Hello World"を出力したいときにforループとスレッドを開始するときに、なぜ速くないのか教えてください。 シンプルなラップトップ(Mac-Air)でスレッドを高速化しているのですか、それとも大きなマシンで実行したほうが速いのですか?ありがとう。 –

答えて

0

cPythonについて言えば、実装はGIL(グローバルインタプリタロック)と呼ばれ、スレッドを複数のCPUコアで実行することはできません。したがって、スレッドライブラリは実際には並列ではありませんなぜあなたのプリントアウトテストは速くなかったのですか?あなたの問題を理解し、並列性の問題を正しく分けていると仮定すると、multiprocessingライブラリーは、問題を並行して実行するのに役立ちます。

関連する問題