問題タブ [python-multiprocessing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
112294 参照

python - multiprocessing.Pool: map_async と imap の違いは何ですか?

Pythonのパッケージの使い方を学ぼうとしているのですが、とmultiprocessingの違いがわかりません。との両方が非同期で実行されることに気付きました。では、いつどちらを使用する必要がありますか? そして、によって返された結果を取得するにはどうすればよいですか?map_asyncimapmap_asyncimapmap_async

このようなものを使用する必要がありますか?

0 投票する
1 に答える
3154 参照

python - マルチプロセッシング プール apply_async

私はマルチプロセッシング、特にプールで遊んでいます。

私のマシンは 32 個のスレッドを実行できるはずです (/proc/cpuinfoファイルによると、私は 32 個のプロセッサを持っています)。

このスクリプトを実行すると、次の結果が得られます。

だから、私が本当に理解していないことが2つあります:

  • これらの 64 のプロセスを並行して実行するにはどうすればよいですか? (開始時間と終了時間はすべて同じなので)
  • processesPool コンストラクターの最大値は?
0 投票する
2 に答える
1943 参照

python - Python マルチプロセッシングを使用した途方もない並列タスクによる高速化の期待

私は恥ずかしいほど並列問題に Python の Multiprocessing パッケージを使用することを学んでいるので、自然数n以下の素数を決定するための直列バージョンと並列バージョンを作成しました。ブログ投稿スタック オーバーフローの質問から読んだ内容に基づいて、次のコードを思いつきました。

シリアル

平行

n = 10000000に対して得られるものは次のとおりです (並列の場合、8 つのプロセスを要求します)。

それで、3倍強のスピードアップが得られるようです。ここに私の質問があります:

  1. 明らかに、これは直線的なスピードアップではありません。では、どれだけ改善できるでしょうか (または、現実的にどのようなスピードアップを期待すべきでしょうか)。
  2. アムダールの法則がこれに答えているように見えますが、プログラムのどの部分が厳密にシリアルであるかを判断する方法がわかりません。

どんな助けでも大歓迎です。

編集:ハイパースレッディングが可能な4つの物理コアがあります。

0 投票する
1 に答える
1485 参照

python - Python 3 マルチプロセッシング: 内部およびタイムアウト エラー処理とコールバック

パラメータ スペースをすばやくスイープするために、Pool.starmap_async を使用して、複数のパラメータを入力として受け取るコードを実行しようとしています。このコードは、時々収束しない linalg 関数を実行し、代わりに np.linalg.LinAlgError をスローします。この場合、コードが np.nan を返し、その陽気な方法を続けたいと思います。また、理想的には、タイムアウトを指定して、コードが設定された秒数の後にあきらめて、別のパラメーターの組み合わせに進むようにしたいと思います。

# This is actually some long function that sometimes returns a linalg error def run_solver(A, B): return A+B

if __name__ == '__main__':

コードが続行されるように TimeoutError を例外としてキャッチしようとしましたが、意図的に LinAlgError を発生させています。なぜなら、コードが時間切れになったときと収束に失敗したときを区別しようとしているからです。それは冗長です。1 つには、結果の辞書は意図したとおりにはなりません。現在のプロセスのパラメーターを照会し、それらを辞書のキーとして使用する方法はありますか? また、タイムアウト エラーが発生した場合は、何らかの方法でこれらのパラメーターにフラグを立てることが理想的です。これを行う最善の方法は何ですか?

最後に、このコードでコールバックが 1 回だけ呼び出されるのはなぜですか? 各プロセスが正常に完了すると呼び出されるべきではありませんか? このコードは、すべてのパラメーターが 1 つのキー (.zip ファイルとして) に詰め込まれた辞書を返し、すべての回答がキー値のリストになっています。

0 投票する
1 に答える
1133 参照

python - マルチプロセッシング使用時のpython matplotlibアニメーション保存エラー

ファイルから一連の画像を実行する matplotlib アニメーションを作成しています。私が視覚化しているファイルは通常非常に大きく、画像のスタックごとにかなりの読み込み時間 (~5 秒) があります。マルチプロセッシングで読み込みプロセスをずらしてアニメーションをスムーズに実行することはできましたが、アニメーションをビデオ ファイルとして保存するのに問題があります。

コードは次のとおりです。

コードはエラーなしで実行されますが、生成されるファイルは何らかの理由で破損しています。vlc で表示しようとすると、長い繰り返しのエラー ストリームが表示されます...

さまざまなライターとエンコーダーを使用して、さまざまなファイル形式で保存しようとしましたが、ほとんど同じ結果が得られました。

multiprocessingこの問題は、 を使用してデータをロードする場合にのみ発生します。でデータを作成するだけdata = np.random.rand(75,100,100)で、アニメーションは問題なく保存されます。

質問:matplotlib.animationと一緒にプレイするに はどうすればよいmultiprocessingですか?