問題タブ [parallel-processing]
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 - Linux でのコマンド キューからの並列処理 (bash、python、ruby など)
Linux サーバーのシェルで実行する必要がある 200 個のコマンドのリスト/キューがあります。
一度に最大 10 個のプロセスを (キューから) 実行したいだけです。一部のプロセスは完了までに数秒かかりますが、他のプロセスはそれよりもはるかに時間がかかります。
プロセスが終了したら、次のコマンドをキューから「ポップ」して実行したいと考えています。
この問題を解決するコードを持っている人はいますか?
さらに詳しく:
ある種のキューに、実行する必要がある 200 個の作業があります。一度に最大 10 個の作業を実行したいと考えています。スレッドが作業を終了すると、キューに次の作業を要求する必要があります。キューに作業がなくなった場合、スレッドは終了するはずです。すべてのスレッドが死んだら、すべての作業が完了したことを意味します。
私が解決しようとしている実際の問題はimapsync
、200 個のメールボックスを古いメール サーバーから新しいメール サーバーに同期することです。メールボックスが大きく同期に時間がかかるユーザーもいれば、メールボックスが非常に小さく同期が速いユーザーもいます。
windows - ダイレクト I/O 用の Windows カーネル ドライバー - 行った人はいますか?
パラレル ポートへの直接 I/O を、現在行っているよりも適切な方法で処理する必要があります。現在、I/O 保護マップを使用して使用可能なアドレスを「開く」カーネル ドライバーを使用しています。これは問題なく機能しますが、ますます取り残されています。引き続きパラレル ポートを使用したいと考えており、CardBus ExpressCard などのパラレル ポート カード ベンダーは非常に満足しています。私の(Delphi)アプリからのこのアドレス。このトピックの明らかな複雑さのために、私はどこから始めるべきか悩んでいます。誰かこのルートに行ったことがありますか?
.net - メソッドを複数回実行するが、接続/スレッドを管理する方法はありますか?(。ネット)
- 接続を使用するメソッドがあります(たとえば、ページをダウンロードするメソッド)。
- このメソッドを複数回実行する必要があります(たとえば、1000ページをダウンロードします)。
- 同期的かつ順次的な方法でそれを行うには長い時間がかかります。
- リソースが限られています(最大8スレッドおよび/または最大50の同時接続)
- 私はそれを加速するためにすべてのリソースを使用したいと思います。
- 並列化(PLINQ、Parallel Extensionsなど)で問題を解決できることは知っていますが、すでに試しましたが、リソースが不足しているため、このアプローチは失敗します。
- リソースを管理しながら、この種のタスクを並列化する車輪の再発明はしたくありません。誰かが以前にそれを実行し、このためのライブラリ/チュートリアルを提供した必要があります。
誰か助けてもらえますか?
非同期呼び出しと並列化を組み合わせてパフォーマンスを最大化すると、更新がさらに複雑になります。これは、Firefoxダウンローダーなどの複数のダウンローダーに実装されており、2つのダウンロードを同時に取得し、そのうちの1つが完了すると、次のファイルを取得します。実装は非常に簡単に思えるかもしれませんが、実装したとき、汎用(WebRequestとDbCommandに便利)にしたり、問題(タイムアウトなど)に対処したりするのに問題がありました。
バウンティハンターバウンティは、信頼性が高く無料の($$).NETライブラリをリンクする最初のライブラリに付与されます。このライブラリは、非同期タスクをHttpWebRequests.BegingetResponseおよびSqlCommand.BeginExecuteNonQueryとして並列化する簡単なC#の方法を提供します。並列化は、N個のタスクが完了するのを待ってから、次のN個を開始する必要はありませんが、最初のN個のタスクの1つが終了するとすぐに新しいタスクを開始する必要があります。メソッドは、タイムアウト処理を提供する必要がありました。
ssis - 複数のタスクが使用可能な場合、SSISは次に実行するタスクをどのように決定しますか
たとえば、4つの(空白の)スクリプトタスクA1、A2、B1、およびB2を追加すると、A2にはA1の後に実行する制約があり、B2にはB1の後に実行する制約がありますが、A1とB1のどちらにも制約はありません。タスクは実行されますか?
これを試してみると、A1、B1、A2、B2の順になっているようです。しかし、なぜ?好奇心からのこの質問。
追加するために編集:
特に並列処理を1に設定し、メッセージボックスを追加して、順序を確認できるようにしました。それは常に私が上で述べたのと同じ順序を取りますが、なぜそれがこの順序を選択するのかについて何らかの論理があるかどうかについて興味がありました。
最初にすべてのレベル1(制約なし)タスクを実行してから、制約付きタスクを続行するようです。
language-agnostic - グランド セントラル vs パラレル エクステンション
Apple の今後の "Grand Central" テクノロジ (Snow Leopard で) に関する優れた Web サイトと、Microsoft の Parallel Extensions (およびネイティブの並列コンピューティング機能) との比較を知っている人はいますか?
parallel-processing - 式の結果を計算する最良の方法は?
私は現在、何百ものユーザー定義式を含むことができるアプリケーションを持っています。現在、逆ポーランド記法を使用して計算を実行しています (値と変数をスタックにプッシュし、スタックからポップして評価します)。このプロセスの並列化を開始する最良の方法は何ですか? 関数型言語を検討する必要がありますか?
計算は数値の配列に対して実行されるため、たとえば、単純な A+B は実際には数百の加算を意味する可能性があります。私は現在 Delphi を使用していますが、これは今後の要件ではありません。その仕事に最も適したツールを使用します。数式は相互に依存する場合もあるため、たとえば、1 つの数式 C=A+B と 2 つ目の数式 D=C+A がある場合があります。
concurrency - 並列/並行アーキテクチャの使用を促進するのはどのような課題ですか?
私は、スタックレス pythonやerlangなど、並列処理や並行処理が組み込まれている言語を使用できる可能性に非常に興奮しています。スケーラビリティとパフォーマンスを実現するための良い/簡単な方法です。
ただし、私は線形/シリアル/OOP/機能的な方法でソリューションを考えることに慣れているため、同時実行を使用する価値のある方法でドメインの問題をキャストするのに苦労しています。多くのことを忘れる必要があるだけだと思いますが、次のことを尋ねると思いました。
- スタックレスやアーランなどでかなり大きなものを実装しましたか?
- なぜそれが良い選択だったのですか?良い選択でしたか?もう一度やりますか?
- あなたの問題のどのような特徴が、並行/並列が正しかったことを意味していますか?
- 並行性/並列性を利用するために、既存の問題を再キャストしましたか? と
- もしそうなら、どのように?
彼らが喜んで共有したい経験はありますか?
parallel-processing - 並列処理ミドルウェア
比較的粗粒度の並列処理 (データ転送は 100 Mbit イーサネット ネットワークで実行できます) の場合、Windows と Linux で利用できるミドルウェアはどれが最適だと思いますか? コルバ?MPI1? MPI2? XML-RPC/SOA/WSDL? カスタム ネットワーク プロトコル? ジャバRPC?パイソン RPC? その他?
multithreading - pthreads - ジョブを並列化する方法
n プロセッサ システムで使用するために、単純なパスワード クラッカーを並列化する必要があります。私の考えは、n個のスレッドを作成し、それらが終了するにつれて、それらにますます多くの仕事を与えることです。
スレッドがいつ終了したかを知る最良の方法は何ですか? ミューテックス?他のスレッドが実行されている間、このミューテックスを常にチェックするのは高価ではありませんか?
ruby - Rubyで大量のWebページを高速にダウンロードするには? ダウンロードの並列化?
(scrAPI を使用して) 400 以上の Web ページの ruby をスクレイピングする必要があります。実際のコードは非常に連続しています。
実際、コードは少し異なります (例外処理など)。
どうすれば速くなりますか?ダウンロードを並列化するにはどうすればよいですか?