問題タブ [parallel-python]
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 - PythonのppモジュールのPicklingError
Pythonのppモジュールを使用しています。私がする必要があるのは、「scipy.optimize」の「fmin」関数を並行して実行することです。次のように fmin をインポートしています。
次に、次のように fmin 関数を実行する関数を定義しています。
そして、これを並行して実行するために、私は以下を使用しています:
次に、job5 のモジュールで PicklingError を取得します。それは「scipy.optimize」だと思います。私も試しimport scipy.optimize as sth
ましたが、job_server.submit は「sth」をモジュールとして受け入れません。解決策はありますか?
ありがとうございました。
python - 開いているファイルが多すぎる並列 Python サブプロセス エラー
同様の問題に関する質問: Parallel Python - too many files and Python too many open files (サブプロセス)
Parallel Python [V1.6.2] を使用してタスクを実行しています。タスクは入力ファイルを処理し、ログ/レポートを出力します。たとえば、それぞれ 5000 ~ 20000 個のファイルを含む 10 個のフォルダーがあり、これらのファイルは並行して読み取られ、処理され、ログが書き出されます。1ファイルあたり約50KB~250KB
~6 時間実行した後、Parallel Python は次のエラーで失敗します。
私は理解していますが、これはここで指摘されているサブプロセスの問題である可能性がありますhttp://bugs.python.org/issue2320ですが、解決策は Py V3.2 の一部にすぎないようです。私は現在 Py V2.7 に縛られています。
次の提案が役立つかどうか知りたい: [1] http://www.parallelpython.com/component/option,com_smf/Itemid,1/topic,313.0
*) /usr/local/lib/python2.7/dist-packages/pp-1.6.2-py2.7.egg/pp.py の destroy() メソッドに worker.t.close() を追加
*) /usr/local/lib/python2.7/dist-packages/pp-1.6.2-py2.7.egg/ppauto.py で BROADCAST_INTERVAL を増やす
Python V2.7 でこの問題の修正/回避策があるかどうかを知りたいです。
前もって感謝します
python - 並列Pythonとクラスの操作
並列Python(PP)とクラスの処理に関して、インターネット上にチュートリアルやガイドがどれほど少ないかを知ってショックを受けました。同じクラスのインスタンスをいくつか開始し、その後、いくつかの変数を取得したいという問題が発生しました(たとえば、5つのデータファイルを並行して読み取り、それらのデータを取得します)。これが私の問題を説明するための簡単なコードです:
便宜上コメントを追加しました。私はここで何が間違っているのですか?
python - ppでシリアル化されたフラクタルとリソースを作成する並列Python
フラクタル画像を作成するための python スクリプトを 1 つ作成します。
このソース コードを高速化するために、pp python モジュールを使用しようとしています。
大きな問題は、 image.putpixel((x, y), (i % 8 * 16, i % 4 * 32,i % 2 * 64))です。ソースコードのこの行がジョブのように使用されている場合、 cPickle.UnpickleableError: Cannot pickle objectsについて教えてください。
このリソースは pp でシリアル化できないと思います。何か考えはありますか? ありがとうございました。よろしく。
私のソースコード:
python - どのフォルダーでモジュールを検索するかを並列pythonプロセスに伝える方法は?
私は、NumPy 1.4.1 が通常のフォルダー (/usr/lib64/....) にインストールされているコンピューター クラスターで作業しています。NumPy 1.7.0 を使用したいので、それをインストールし、 NumPy 1.7.0 を自動的にロードするように/.../myPath
に追加export PYTHONPATH=/.../myPath
しました。これは、並列 pythonを使用する場合の特殊性を除いて、正常に機能します。各プロセスで正しい NumPy モジュールをロードするために、これらのプロセスは変数を無視しているように見えるため、 を変更します。.bashrc
import numpy
sys.path
$PYTHONPATH
出力は希望どおりです。
しかし、ndarray
このような引数で呼び出すと
出力は次のように変わります
私の解釈: サブプロセスはnumpy.ndarray
呼び出されるとすぐに引数を受け取るためnumpy
、変更する機会を得る前にという名前のモジュールを検索しますsys.path
。これを修正する方法についてのアイデアはありますか?
python - StarCluster / qsub / EC2を動的にスケーリングして、複数のノード間で並列ジョブを実行する方法
Startcluster / qsub / grid engineを使用して並列ジョブを実行するのは初めてで、同じことに関する他のいくつかの投稿を読んでみました。特定の要件に合わせてスケーラブルなソリューションを構築する方法がまだわかりません。同じことを進める前に、もう少し提案を取り入れたいと思います。
これが私の要件です:
私は巨大なtarファイルを持っています[〜40-50 GB、最大100GBになる可能性があります]----->ここでできることはあまりありません。私はその巨大な単一のtarファイルを入力として受け入れました。
tarを解凍して解凍する必要があります----->tarxvftarfilename.tar|を実行します。pbzip -dを並列にして、同じものを解凍して解凍します。
この解凍の出力は、たとえば数十万ファイル、約50万ファイルです。
この非圧縮ファイルは処理する必要があります。すべてのファイルを取り込んで処理し、5つの異なるファイルを出力できるモジュラーコードがあります。
Tarファイル-----並列非圧縮--->非圧縮ファイル-----並列処理--->処理されたファイルごとに5つの出力ファイル
私は現在、16コアで実行される並列Pythonスクリプトを持っています。16GBのメモリは、この非圧縮ファイルのリストを取り込んで、同じものを並列処理します。
問題は、どのようにシームレスにスケーリングするかです。たとえば、コードが10時間実行されていると言っていて、それに8コアマシンをもう1つ追加したい場合、プロセッサの数を事前に知っている必要があるため、並列Pythonでそれを行うことはできません。
同時に、現在のクラスターに動的にノードを追加する場合、データのアクセス可能性と読み取り/書き込み操作はどうですか?
それで、私は星団とqsubを読んで基本的な実験をしました。qsubを介して複数のジョブを送信できることはわかりますが、非圧縮の入力フォルダーから入力ファイルを取得するにはどうすればよいですか?
たとえば、forループでファイル名を1つずつ選択してqsubコマンドに送信するscript.shを作成できますか?別の効率的な解決策はありますか?
たとえば、それぞれ16個のCPUを搭載した3台のマシンがあり、48個のジョブをキューに送信した場合、qsubはクラスターの異なるCPUでそれらを自動的に起動するか、-nporteコマンドなどの並列環境パラメーターを使用して番号を設定する必要があります。それぞれのクラスター内のCPUの数。PythonスクリプトをMPIで実行可能にする必要がありますか?
要約すると、入力として数十万のファイルがあり、それらをマルチコアマシンのジョブキューに送信したいと思います。マシンを動的に追加すると、ジョブは自動的に分散されます。
もう1つの大きな課題は、500,000の奇数操作のすべての出力を最後に集約する必要があるということです。出力が書き出されるときに、並列ジョブの出力を集約する方法についての提案はありますか?
私はいくつかのシナリオをテスト実行していますが、同様のシナリオで実験した人がいるかどうか知りたいです。
Hadoopプラグインを使用した提案はありますか?http://star.mit.edu/cluster/docs/0.93.3/plugins/hadoop.html
事前にKarthickに感謝します
python - 並列 Python (pp) とサブプロセス: タスクはクライアントで決して終了しません
モジュール「Parallel Python」(pp) を使用して、「大きな」ツール (聞いたことがある場合は gdal2tiles) の計算を分散しようとしています。pp に慣れるためにいくつかの簡単なテストを実行していましたが、説明できない問題に遭遇しました。
コードは次のとおりです。
subprocess.Popen の「dir」は、有効なシェル コマンドを渡すためのものです。
私の ppserver では、「ppserver.py -a -d」を実行します。クライアントのコンソールでは、タスクが終了しないように見えますが、サーバーでは終了します。
テストをさらに進める前に、ここで何が起こっているのかを理解したいと思います。最終的なプログラムはもっと複雑だからです。
ありがとう!
python - 他のサーバーを使用した並列 Python モジュール
私は並列pythonを使用して、複数のコンピューターでいくつかの数値計算を行っています。いくつかのクラスを含めるといいと思うまで、すべてがうまく機能していました。
ジョブを送信するためのコードは次のとおりです。
単一のコンピューターでは完全に正常に動作します (これもすべてのコアを使用するため、問題ありません) が、別のサーバーを使用しようとすると、計算が停止することはありません。
問題は、ファイルがサーバーに存在しないためにロードできないため、サーバーに CPU 負荷がないことfrom SimulationOO import *
です。
回避策の 1 つは、メソッド.fcalc_rs_rp()
をクラスの外に出して関数にすることですが、実際にはクラス内に関数を入れたいのですが、何か良いアイデアがあるでしょうか?
その部分を使用せずfrom SimulationOO import *
、代わりに depfuncs として必要なすべての関数を定義しようとすると、使用しているクラスの 1 つであるというエラーAttributeError: 'module' object has no attribute 'Layer'
が発生します。Layer
どうすればこれを機能させることができるか、何かアドバイスはありますか?
ありがとうございました