問題タブ [multiprocess]

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 投票する
1 に答える
118 参照

multithreading - マルチプロセス IO はマルチスレッド IO より高速です

コマンドラインオプションに基づいて次のことを行うテストプログラムがあります。

1)複数のプロセスをフォークし、各プロセスが同じテキストファイルを順番に完全に読み取ります

2) 複数のスレッドを作成し、各スレッドが同じテキスト ファイルを順番に完全に読み取る

マルチスレッド アプローチは、マルチプロセス アプローチよりも約 35% 長い時間がかかることに気付きました。

マルチプロセス IO がマルチスレッド IO よりも速いのはなぜですか?

マシン構成: 8 GB RAM、4 コア、

コードとテスト結果は次のとおりです。

マルチプロセスにかかった時間:

時間 ./io_test p 20

実 0m26.170s ユーザー 1m40.149s システム 0m3.360s

マルチスレッドにかかった時間:

時間 ./io_test t 20

実際の 0m35.561s ユーザー 2m14.245s システム 0m4.577s

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

python - 1 つのプロセスに対して Python スクリプトですべての CPU コアを使用する

PythonスクリプトですべてのCPUを使用したいのですが、いくつかのコードが同じです:

しかし、それは一致するCPUではありません.p1は1,2,3,4,5から書き込みを開始します....そしてp2は継続しませんp2も開始1,2,3,4から開始するため、結果は次のとおりです:1122334455

どうすればCPUの2つのコアを一緒に合わせることができますか? 私の PC ができる最速でファイルを書きたいのですが、私は i7 CPU を使用しています。

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

python - マルチプロセスでファイルを読み込んでリストにロードする方法

読み込む必要のあるデータ ファイルが大きすぎて、リストへの読み込みに時間がかかりすぎます。これにマルチプロセスを使用するにはどうすればよいですか? つまり、プロセスファイルの読み取りとリストへのロードを並列化したいのです。助けてください。

基本的に、以下のようなリストにロードする必要があるデータテーブルがあります。ファイルの読み込みには時間がかかりませんが、リスト (myList) への読み込みには約 1 分かかります。それで、これを並列化することは可能ですか:

その場しのぎの方法として、(ファイルに 2M 行あると仮定すると、len(lines) = 2M)、最初の 1M を myList1 にロードし、2 番目の 1M を myList2 に並行してロードしてから、それらをマージします (myList = myList1+myList2)。しかし、これはベスト プラクティスとは思えません。

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

python - プールを使用してプロセスから画面に出力

プールによって生成されたプロセスから画面に印刷しようとしています。残念ながら何も起きません!同時に 4 つのプロセスをかなり長い間実行するため、これが必要です。その間に、推定値を取得して情報を出力する必要があります。

私は自分で調べようとしてブラウジングしてきましたが、これが本当に可能かどうか、またはその方法がわかりません。プールではなくプロセスを使用していますか? ヘルプとコードをいただければ幸いです。

これは非常に簡単な例です。喜んで機能させます。

プールを終了して「res」を出力する前に、「プリンター」が何をするかを出力したいと思います。

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

python - Python の共有永続ストレージ

複数のプロセスがそれぞれファイルをディレクトリに書き込んでいます。目標は、サイズ (S) に達するたびにすべてのプロセスがディレクトリへの書き込みを停止し、書き込みしようとしているファイルを破棄するように、ディレクトリのサイズを制御することです。

これらのファイルの一部が削除されたためにサイズが S 未満になった場合、プロセスはファイルの書き込みを再開します。

この設計を実現するには、プロセス間ロックが必要なようです。ただし、Python ではプロセス間ロックをすぐに利用できず、明らかにプロセス間に競合があるため、もっと簡単な方法があるのではないかと思いました。

Python 2.7 プラットフォーム (Win、Mac、Linux)

0 投票する
0 に答える
224 参照

delphi - Delphi 組み込みアプリのキーストロークを検出する

各ドキュメントが新しいプロセスで開かれるマルチプロセス アプリに取り組んでいます。Google Chrome のように動作します。

これを除いて、すべてが正常に機能しています。

埋め込みアプリのいずれかのコントロールがアクティブな場合、メイン ウィンドウ (埋め込みウィンドウを含む) はキーストローク (Ctrl + N など) を受け取りません。埋め込まれたウィンドウが別のプロセスで実行されるという事実を理解しています。これが機能しない理由です。

私は何をする必要がありますか:

  • メイン ウィンドウは、埋め込みウィンドウで押されたキーストロークを検出する必要があります
  • メイン ウィンドウにキーストロークに何かが割り当てられている場合、メイン ウィンドウは埋め込みフォームではなくキーボード ショートカットを受け取る必要があります。

いくつかの重要な詳細:

  • 私は両方のプロセスのソースコードを制御しています(動作が異なる同じexeです)
  • キーストロークにアクションを使用しています
  • 更新: IPC に WM_COPYDATA を使用します (レコードの送信)
  • 更新:UIプロセスは1つだけです(別名メインウィンドウ)

埋め込みコード:

このコードは、他のプロセスのウィンドウをメイン UI ウィンドウに埋め込みます。受け取った値に基づいて、WM_COPYDATA ハンドラによって直接呼び出されます。

これは、子プロセスがメイン ウィンドウに通知する方法です。

私はこれまでに何を持っていますか?

IPC には WM_COPYDATA を使用します。

ホットキーのリストを埋め込みフォームに送信し、そこにアクションとして登録するコードはまだありません。アイデアだけです。アクションが埋め込みフォームで実行されると、キーストロークがメイン フォームに送信されます。

このアイデアはエレガントな解決策ではありません。より良い解決策があれば知りたいです。もしあれば、それは何でしょうか。

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

python - Python マルチプロセッシング ヘルプ 条件付きで終了

私は Python 内でのマルチプロセッシングについて歯を食いしばっていますが、この件について頭を抱えているわけではありません。基本的に、実行に時間がかかる手順があります。1 から 100 の範囲で実行する必要がありますが、探している条件が満たされたら、すべてのプロセスを中止したいと思います。条件は戻り値== 90です。

これは、非マルチプロセスのコード チャンクです。「90」の条件が満たされると、コードがすべてのプロセスを終了するマルチプロセス関数に変換する方法の例を誰か教えてもらえますか?

編集:

3 番目のバージョンのテスト中にこのエラーが発生しました。これの原因は何ですか?

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

python - すべてのスレッドと同じプロセスのスレッドからのプロセスを強制終了する

2 種類のスレッド クラスを生成するプロセスがあります。1 つのスレッドが job_queue の消費を担当します (通常、このクラスの 100 スレッドが実行されます)。そして 2 番目のスレッドは kill スレッドです。thread2 から設定されている result_done フラグを使用しています。問題は、threads1 が X 秒間待機してから、result_done フラグが設定されているかどうかを確認することです。

ここで、maxtimeout を 500 秒に設定し、別のスレッドから result_done フラグを設定すると、このスレッドは終了する前に 500 秒間待機します (キューにデータがない場合)。

私が達成したいのは、プロセスのいずれかのスレッドから result_done イベントが設定されるとすぐに、すべてのスレッドが現在のプロセスとともに正常に終了し、db、websocket、http 接続などを適切に終了することです。

これらのスレッドを生成するプロセスを作成するために、Python マルチプロセス ライブラリを使用しています。

更新: すべてのスレッドは daemon=True スレッドです。