問題タブ [process-pool]
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 - docplex の例を実行しようとしたときの BrokenProcessPool エラー
Python プロセス プールと並行していくつかの cplex モデルを実行しようとしています。Windows 10-spyder 3.6.9でdocplexを使用したプロセスプールの例としてこれを実行しようとしました。実行すると、次のエラーが発生します。
別のマシンを使用して max_worker を 1 に設定してみましたが、役に立ちませんでした。
編集: より明確にするために使用しているコードを配置します。これは私の process_pool.py です:
これは、内部に cplex モデルがあり、process_pool を使用する zoomontecarlo2.py です。
エンジンが「for future in concurrent.futures.as_completed(future_to_i)」ループ内に入ると、メモリ情報は次のようになります。
svmem(合計=17091981312、使用可能=9288286208、パーセント=45.7、使用=7803695104、空き=9288286208)
「res = future.result()」に到達すると、上記のエラーでクラッシュします。
python - os.sched_getaffinity(0) 対 os.cpu_count()
したがって、タイトルにある 2 つの方法の違いはわかりますが、実際的な意味はわかりません。
私が理解していることから、実際に利用可能なコアよりも多くの NUM_WORKERS を使用すると、OS が物事を並行して維持しようとして絶えず切り替えられるため、パフォーマンスが大幅に低下します。これがどれほど真実かはわかりませんが、私はどこかで私より賢い人からそれを読んだ.
そしてそれのためのドキュメントにos.cpu_count()
は次のように書かれています:
システム内の CPU の数を返します。不明な場合は None を返します。この数は、現在のプロセスが使用できる CPU の数とは異なります。使用可能なCPU数はlen(os.sched_getaffinity(0))で取得できます
そのため、「システム」にあるよりも多くの CPU をプロセスで使用できる場合、「システム」が何を指すかを理解しようとしています。
安全かつ効率的に機能を実装したいだけですmultiprocessing.pool
。だからここに私の質問が要約されています:
次の実際的な意味は何ですか。
これ-1
は、データの処理中に作業を行おうとすると、システムの遅延が大幅に軽減されることがわかったためです。
python - multiprocessing.Pool.map の worker_funtion 内から配列に値を割り当てる方法は?
基本的に私が望む2
のは、それらを に挿入して、 の外側で変更されるar
ようにすることです。ar
worker_function
これまでに達成できる唯一のことは、関数の外側ではなくar
内側のコピーを変更することです。worker_function