問題タブ [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.
python - multiprocessing.Pool: map_async と imap の違いは何ですか?
Pythonのパッケージの使い方を学ぼうとしているのですが、とmultiprocessing
の違いがわかりません。との両方が非同期で実行されることに気付きました。では、いつどちらを使用する必要がありますか? そして、によって返された結果を取得するにはどうすればよいですか?map_async
imap
map_async
imap
map_async
このようなものを使用する必要がありますか?
python - マルチプロセッシング プール apply_async
私はマルチプロセッシング、特にプールで遊んでいます。
私のマシンは 32 個のスレッドを実行できるはずです (/proc/cpuinfo
ファイルによると、私は 32 個のプロセッサを持っています)。
このスクリプトを実行すると、次の結果が得られます。
だから、私が本当に理解していないことが2つあります:
- これらの 64 のプロセスを並行して実行するにはどうすればよいですか? (開始時間と終了時間はすべて同じなので)
processes
Pool コンストラクターの最大値は?
python - Python マルチプロセッシングを使用した途方もない並列タスクによる高速化の期待
私は恥ずかしいほど並列問題に Python の Multiprocessing パッケージを使用することを学んでいるので、自然数n以下の素数を決定するための直列バージョンと並列バージョンを作成しました。ブログ投稿とスタック オーバーフローの質問から読んだ内容に基づいて、次のコードを思いつきました。
シリアル
平行
n = 10000000に対して得られるものは次のとおりです (並列の場合、8 つのプロセスを要求します)。
それで、3倍強のスピードアップが得られるようです。ここに私の質問があります:
- 明らかに、これは直線的なスピードアップではありません。では、どれだけ改善できるでしょうか (または、現実的にどのようなスピードアップを期待すべきでしょうか)。
- アムダールの法則がこれに答えているように見えますが、プログラムのどの部分が厳密にシリアルであるかを判断する方法がわかりません。
どんな助けでも大歓迎です。
編集:ハイパースレッディングが可能な4つの物理コアがあります。
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 ファイルとして) に詰め込まれた辞書を返し、すべての回答がキー値のリストになっています。
python - マルチプロセッシング使用時のpython matplotlibアニメーション保存エラー
ファイルから一連の画像を実行する matplotlib アニメーションを作成しています。私が視覚化しているファイルは通常非常に大きく、画像のスタックごとにかなりの読み込み時間 (~5 秒) があります。マルチプロセッシングで読み込みプロセスをずらしてアニメーションをスムーズに実行することはできましたが、アニメーションをビデオ ファイルとして保存するのに問題があります。
コードは次のとおりです。
コードはエラーなしで実行されますが、生成されるファイルは何らかの理由で破損しています。vlc で表示しようとすると、長い繰り返しのエラー ストリームが表示されます...
さまざまなライターとエンコーダーを使用して、さまざまなファイル形式で保存しようとしましたが、ほとんど同じ結果が得られました。
multiprocessing
この問題は、 を使用してデータをロードする場合にのみ発生します。でデータを作成するだけdata = np.random.rand(75,100,100)
で、アニメーションは問題なく保存されます。
質問:matplotlib.animation
と一緒にプレイするに はどうすればよいmultiprocessing
ですか?